在iOS中,我在两个父UIViews之间拖动一个UIView。我正在使用UIPanGestureRecognizer来管理拖动。当拖动仍在进行时,我通过使用以下命令切换正在拖动的视图的父级:
- (IBAction)handlePanGesture:(UIPanGestureRecognizer *)sender {
...
[viewBeingDragged removeFromSuperview];
UIView* page2 = [self.view viewWithTag:pageTag];
[page2 addSubview:viewBeingDragged];
// Now scroll page 2 into view
[pageContainerScrollView setContentOffset:CGPointMake(xcoord, 0) animated:YES];
...这似乎结束了淘金事件。然而,我的手指仍然“向下”。在这一点上,我怎样才能检测到我的手指抬起了?我已经尝试了一个单独的UITapGestureRecognizer,如果平移没有发生,它会正常触发,但如果平移已经开始,它就不会触发。
有什么想法吗?
发布于 2012-06-15 22:52:15
试试这个:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
...
}
UIPanGestureRecognizer *recognizer;
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
[self addGestureRecognizer:recognizer];
}和
-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
if ( [recognizer state] == UIGestureRecognizerStateEnded )
{
NSLog(@"Ended");
}
}你可以找到所有的状态here:
希望能有所帮助。
发布于 2012-08-28 22:25:24
我有same problem。您只需删除行:[viewBeingDragged removeFromSuperview];。
UIView只能有一个superview,因此当您调用[page2 addSubview:viewBeingDragged]时,viewBeingDragged UIView将首先从其当前superview中移除。
https://stackoverflow.com/questions/10621496
复制相似问题