UITapGestureRecognizer 似乎没有被其子视图阻止,这正常吗?
UITapGestureRecognizer seems not blocked by its subviews, is that normal?
我是 iOS 开发的新手,我现在正在尝试构建一个登录页面。
登录页面是一个整屏CollectionView中的UICollectionViewCell。红色区域代表一个 UIImageView。
我想实现的是,当键盘出现并且我点击屏幕的其他区域而不是键盘时,键盘会消失。
我当前的解决方案是在 self.view 上应用 UITapGestureRecognizer,它工作正常。但是,每当我点击 imageView 时,它都会触发关闭键盘 GestureRecognizer。
我想问一下,这是手势识别器的正常行为吗?因为图像视图是 self.view 的子视图,我认为图像视图会阻塞 self.view,这意味着阻塞 self.view 上的 UITapGestureRecgnizer。
子视图没有阻塞的原因是因为它没有消耗触摸事件。
如果视图接收到触摸事件但未使用它,则该事件会沿着视图层次结构向上传递,一直返回到位于您的应用程序后面的 OS。
如果您不希望点击手势识别器接收图像视图内的触摸,那么您可以在图像视图上打开 isUserInteractionEnabled
。
这将使图像视图消耗触摸事件,而手势识别器将不会接收它。
我是 iOS 开发的新手,我现在正在尝试构建一个登录页面。 登录页面是一个整屏CollectionView中的UICollectionViewCell。红色区域代表一个 UIImageView。
我想实现的是,当键盘出现并且我点击屏幕的其他区域而不是键盘时,键盘会消失。 我当前的解决方案是在 self.view 上应用 UITapGestureRecognizer,它工作正常。但是,每当我点击 imageView 时,它都会触发关闭键盘 GestureRecognizer。
我想问一下,这是手势识别器的正常行为吗?因为图像视图是 self.view 的子视图,我认为图像视图会阻塞 self.view,这意味着阻塞 self.view 上的 UITapGestureRecgnizer。
子视图没有阻塞的原因是因为它没有消耗触摸事件。
如果视图接收到触摸事件但未使用它,则该事件会沿着视图层次结构向上传递,一直返回到位于您的应用程序后面的 OS。
如果您不希望点击手势识别器接收图像视图内的触摸,那么您可以在图像视图上打开 isUserInteractionEnabled
。
这将使图像视图消耗触摸事件,而手势识别器将不会接收它。