objective-c - 如何完全删除手势识别器

标签 objective-c ios uigesturerecognizer

我正在尝试删除附加到 uiscrollview 的三个手势识别器。

我列出他们使用

NSArray * activeScrollViewGRecs = [theScrollView gestureRecognizers];
NSLog (@"activeScrollViewGRecs count: %d",[activeScrollViewGRecs count]);

我列出了三个。

然后我删除它们:

for (UIGestureRecognizer *recognizer in activeScrollViewGRecs)
{
    NSLog (@"recognizer: %@",recognizer.description);
    recognizer.enabled = NO;
    [theScrollView removeGestureRecognizer:recognizer];
}

然后我再次列出它们,结果为零。他们应该消失/移除,对吧? 那么为什么 View 会继续响应(并调用手势方法)相同的触摸/滑动。在它们永远消失之前是否需要某种“刷新”机制?

它们是这样创建的:

tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle1:)];
tapGesture.cancelsTouchesInView = NO; tapGesture.delaysTouchesEnded = NO; 
tapGesture.numberOfTouchesRequired = 2; tapGesture.numberOfTapsRequired = 2;     
[self.view addGestureRecognizer:tapGesture]; [tapGesture release];

swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handle2:)];
swipeGesture.cancelsTouchesInView = NO; swipeGesture.delaysTouchesEnded = NO; swipeGesture.delegate = self;
swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeGesture]; [swipeGesture release];

谢谢

最佳答案

为什么不使用下面的手势委托(delegate)来停止任何手势:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

关于objective-c - 如何完全删除手势识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538686/

相关文章:

objective-c - 2 个文本字段始终等于 100% xcode

objective-c - UITableView 不滚动

objective-c - Cocoa Touch CorePlot 散点图未显示

objective-c - iOS - 在没有应用程序更新的情况下更新用户流程

ios - UITableViewCell subview 不接收触摸

objective-c - UIGestureRecognizer 或 touchesBegan 没有响应

ios - 在模拟等待时关闭键盘

ios - WKWebView 的网页不显示 dispatch_get_main_queue 内的页面

iOS 8 - 带有未知错误的 sqlite。

ios - 无法在 UIScrollView 中的 UITableView 上同时向上/向下滚动和向左/向右滚动