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

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

概述我想实现以下目标. 场景:当用户键入特定文本字段时,iOS键盘在屏幕上.用户可以点击键盘和文本字段之外的任何位置来关闭键盘(不激活任何可见的按钮).此外,用户可以拖动键盘外部并观察可滚动视图的某些布置上的正常拖动行为. 从概念上讲,我在屏幕的大部分区域放置了一个“封面”UIView,其行为如下: >如果用户点击封面,那么我捕捉到那个点击(这样我就可以,例如,解除键盘).通过拦截UIView子类中的 我想实现以下目标.

场景:当用户键入特定文本字段时,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)

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

总结

以上是内存溢出为你收集整理的ios – 创建一个捕获点击的UIView,但对所有其他手势都是透明的全部内容,希望文章能够帮你解决ios – 创建一个捕获点击的UIView,但对所有其他手势都是透明的所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存