ios - 当触地按钮( subview )时,不要处理 super View 上的平移手势

标签 ios objective-c swift view uigesturerecognizer

我有一个可以通过平移手势移动的 View ( super View ),该 View 有带有 TouchDown 事件的 subview (UIButton)。但是,当我按下按钮(已处理触地事件)并继续移动手指时,我的 super View 开始处理平移手势方法。 当我触地其 subview 时,如何禁用处理 super View 的平移手势方法?

最佳答案

要禁用 UIView subview 上的触摸事件,您可以将此扩展添加到 UIViewController:

extension UIViewController:UIGestureRecognizerDelegate {
    func hideKeyboardWhenTappedAround() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        view.addGestureRecognizer(tap)
        tap.delegate = self
    }

    func dismissKeyboard() {
        view.endEditing(true)
    }
    public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
       if (touch.view!.isDescendantOfView(self.view) && touch.view != self.view){
            return false
        }
        return true
    }
}

关于ios - 当触地按钮( subview )时,不要处理 super View 上的平移手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861002/

相关文章:

iphone - 调整框架大小后禁用 uiviews 按钮中的用户操作

ios - iOS7 上错误的 UITableView 分隔符颜色

ios - Segue 反推效应

swift - 如何删除带有圆形/弧形路径的阴影 UIView 中的弧形边框?

ios - 来自一个 View Controller 的输入附件 View 错误地出现在另一个 View Controller 中

ios - GPUImage 相机需要五秒钟

ios - 将 View Controller 添加到 UICollectionViewCell

ios - 崩溃 : Swift, 在现有核心数据上添加新实体

javascript - UIWebView 检索链接并导航到它

c++ - 对类型的非常量左值引用 - 使用 Class 类型的参数时 Objective-C++ 包装器中的错误