我想通过添加自定义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 = ...
结果,Xcode在寻找合适的Objective-C方法定义时需要其他帮助。为此,我必须在@objc
注释后提供方法签名: