UITapGestureRecognizer 似乎没有被它的子视图阻止,这正常吗?

Posted

技术标签:

【中文标题】UITapGestureRecognizer 似乎没有被它的子视图阻止,这正常吗?【英文标题】:UITapGestureRecognizer seems not blocked by its subviews, is that normal? 【发布时间】:2017-08-19 05:26:40 【问题描述】:

我是这里的 ios 开发新手,我现在正在尝试构建一个登录页面。 登录页面是全屏CollectionView中的一个UICollectionViewCell。红色区域代表一个 UIImageView。

我想实现,当键盘出现时,我点击屏幕的另一个区域,而不是键盘,键盘会关闭。 我目前的解决方案是在 self.view 上应用 UITapGestureRecognizer,它工作正常。但是,每当我点击 imageView 时,它都会触发关闭键盘 GestureRecognizer。

我想问的是手势识别器的正常行为吗?因为image view是self.view的一个子view,而且我认为image view会挡住self.view,也就是说挡住self.view上的UITapGestureRecgnizer。

【问题讨论】:

【参考方案1】:

subView 没有阻塞的原因是它没有消耗触摸事件。

如果一个视图接收到一个触摸事件但没有使用它,那么该事件会向上传递视图层次结构,一直返回到位于应用程序后面的操作系统。

如果您不希望您的点击手势识别器在您的图像视图中接收触摸,那么您可以在图像视图上打开isUserInteractionEnabled

这将使图像视图消耗触摸事件,而手势识别器将不会接收它。

【讨论】:

以上是关于UITapGestureRecognizer 似乎没有被它的子视图阻止,这正常吗?的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 上的 UITapGestureRecognizer

尝试添加 UITapGestureRecognizer 但不工作

UITableViewCell UITapGestureRecognizer 没有响应

UISwipeGestureRecognizer 被 UITapGestureRecognizer 阻止

UITapGestureRecognizer 仅适用于最后一项

UITapGestureRecognizer 在 iOS9 上不起作用