加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 创建一个捕获点击的UIView,但对所有其他手势都是透明的

发布时间:2020-12-14 19:14:18 所属栏目:百科 来源:网络整理
导读:我想实现以下目标. 场景:当用户键入特定文本字段时,iOS键盘在屏幕上.用户可以点击键盘和文本字段之外的任何位置来关闭键盘(不激活任何可见的按钮).此外,用户可以拖动键盘外部并观察可滚动视图的某些布置上的正常拖动行为. 从概念上讲,我在屏幕的大部分区域
我想实现以下目标.

场景:当用户键入特定文本字段时,iOS键盘在屏幕上.用户可以点击键盘和文本字段之外的任何位置来关闭键盘(不激活任何可见的按钮).此外,用户可以拖动键盘外部并观察可滚动视图的某些布置上的正常拖动行为.

从概念上讲,我在屏幕的大部分区域放置了一个“封面”UIView,其行为如下:

>如果用户点击封面,那么我捕捉到那个点击(这样我就可以,例如,解除键盘).通过拦截UIView子类中的触摸事件或使用轻击手势识别器,可以轻松实现这一点.
>如果用户拖动盖子,则盖子忽略或转发这些触摸;它们被下面的层接收,就像它们没有盖子一样.

因此:用户应该能够滚动封面下方的内容,但不能点击封面下方的内容.键盘和文本字段的“外部”点击应该关闭键盘(和封面),但不应激活任何东西.

我怎样才能做到这一点?

解决方法

通常的方式添加点按手势:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
[self.view addGestureRecognizer:tapGesture];

但你可能正在寻找的是:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {    
        return YES;
    }

文档说:当gestureRecognizer或otherGestureRecognizer识别手势会阻止其他手势识别器识别其手势时,会调用此方法. (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizerDelegate_Protocol/index.html#//apple_ref/occ/intf/UIGestureRecognizerDelegate)

这样,您可以确定它是完全透明的,并且没有任何东西可以阻止您的识别器被调用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读