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 阻止