首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UIGestureRecognizer阻止用于处理触摸事件的子视图

UIGestureRecognizer阻止用于处理触摸事件的子视图
EN

Stack Overflow用户
提问于 2011-03-08 01:32:06
回答 10查看 65.9K关注 0票数 82

我正在试图弄清楚如何以正确的方式完成这项工作。我试着描述一下这种情况:

我要添加一个UITableView作为UIView的子视图。UIView会对轻击和pinchGestureRecognizer做出响应,但当这样做时,tableview会停止对这两个手势的反应(它仍然会对滑动做出反应)。

我已经用下面的代码让它工作了,但这显然不是一个好的解决方案,我相信有更好的方法。这放在UIView (超级视图)中:

代码语言:javascript
复制
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if([super hitTest:point withEvent:event] == self) {
        for (id gesture in self.gestureRecognizers) {
            [gesture setEnabled:YES];
        }
        return self;
    }
    for (id gesture in self.gestureRecognizers) {
        [gesture setEnabled:NO];
    }
    return [self.subviews lastObject];
}
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-05-05 01:35:01

我遇到了一个非常类似的问题,并找到了我的解决方案in this SO question。总之,将自己设置为UIGestureRecognizer的代表,然后在允许识别器处理触摸之前检查目标视图。相关的委托方法是:

代码语言:javascript
复制
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
       shouldReceiveTouch:(UITouch *)touch
票数 182
EN

Stack Overflow用户

发布于 2012-07-20 14:05:54

阻止触摸事件到子视图是默认行为。您可以更改此行为:

代码语言:javascript
复制
UITapGestureRecognizer *r = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(agentPickerTapped:)];
r.cancelsTouchesInView = NO;
[agentPicker addGestureRecognizer:r];
票数 109
EN

Stack Overflow用户

发布于 2013-07-24 19:43:30

我显示了一个有自己的表视图的下拉子视图。因此,touch.view有时会返回像UITableViewCell这样的类。我必须遍历超类,以确保它是我认为的子类:

代码语言:javascript
复制
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    UIView *view = touch.view;
    while (view.class != UIView.class) {
        // Check if superclass is of type dropdown
        if (view.class == dropDown.class) { // dropDown is an ivar; replace with your own
            NSLog(@"Is of type dropdown; returning NO");
            return NO;
        } else {
            view = view.superview;
        }
    }

    return YES;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5222998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档