找出已设置手势的视图

Find out the view of the gesture has been set

在我的 SecondViewController 中,我有一个带有自定义 UITableViewCellUITableView,其中我有一个 UIPanGestureRecognizer,我希望它在 otherGestureRecognizer 时失败UIPanGestureRecognizer 来自 ViewController FirstViewController

单元格的 UIPanGestureRecognizer 设置为 self 我尝试使用 gestureRecognizer: shouldRequireFailureOfGestureRecognizer:

override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    let view = otherGestureRecognizer.view
    if let view as? FirstViewController.view { // Obviously doesn't work
        return true
    }
    return false
}

问题是,当从 FirstViewController 识别出手势时,如何让 UITableViewCellUIPanGestureRecognizer 失败?

这可能看起来很愚蠢,但在我看来,您的问题纯粹是身份识别问题之一:这个手势识别器 otherGestureRecognizer 是我担心的特定手势识别器吗?我立即想到两个选择:

  • 正如您正确指出的那样,它 view。关于这个观点,您是否没有可以提出的问题来帮助您识别它?它是否具有与众不同的 backgroundColor 或任何其他有助于解决此问题的功能?它的 class 呢?它是一个普通的香草 UIView,还是一些与众不同的 class?

  • 您还有 UIPanGestureRecognizer 本身。因此,我可能会使用的一个非常简单的解决方案是 subclass UIPanGestureRecognizer:让我们调用 subclass MySpecialPanGestureRecognizer。这个 subclass 没有特殊功能,除了充当标识符外没有其他用途!当您为视图提供其手势识别器时,将该手势识别器设置为 MySpecialPanGestureRecognizer。现在你可以问是否 otherGestureRecognizer is MySpecialPanGestureRecognizer.