UITableView as UIGestureRecognizerDelegate

问题描述 投票:0回答:1

我想通过添加自定义UITableView来扩展UIPanGestureRecognizer

extension UITableView {

   func addCustomPanGestureRecognizer() {
        let panGestureRecognizer = UIPanGestureRecognizer()
        panGestureRecognizer.delegate = self
        addGestureRecognizer(panGestureRecognizer)

        // some additional setup
        // ...
    }

}

由于自定义手势识别器会干扰滚动,因此我尝试通过可选要求实现UIGestureRecognizerDelegate

extension UITableView: UIGestureRecognizerDelegate {

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return otherGestureRecognizer == self.panGestureRecognizer
    }

}

...,尽管委托给tableView(如上所示),但它根本没有被调用。

此外,Xcode显示警告:

实例方法'gestureRecognizer(:shouldRecognizeSimultaneousWith :)'几乎与协议'UIGestureRecognizerDelegate'的可选要求'gestureRecognizer(:shouldRecognizeSimultaneouslyWith :)'匹配>]

为了摆脱警告,我尝试在方法定义之前添加@objc批注,但是没有运气。

我想通过添加自定义UIPanGestureRecognizer来扩展UITableView:扩展UITableView {func addCustomPanGestureRecognizer(){让panGestureRecognizer = ...

swift uitableview uigesturerecognizer
1个回答
0
投票

结果,Xcode在寻找合适的Objective-C方法定义时需要其他帮助。为此,我必须在@objc注释后提供方法签名:

© www.soinside.com 2019 - 2024. All rights reserved.