Phi*_*lip 19 objective-c uiscrollview uiview ios
我在UIScrollView上有一个手势识别器,但它几乎不会被调用,因为UIScrollView会吃掉所有手势.
我用这一行部分解决了这个问题:[scrollView.panGestureRecognizer requireGestureRecognizerToFail:rightSwipe];然而,这一行导致我的识别器总是被接受(所需的行为)并且滚动视图不滚动.
也就是说,滚动时,识别器被接受但视图不会滚动.
我该如何解决这个问题,还是有替代解决方案?
谢谢!
War*_*shi 19
创建一个子类UIScrollView.在新的子类中添加此方法
- (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UISwipeGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
Run Code Online (Sandbox Code Playgroud)
将scrollView类设置为新的scrollview子类.
对我有用的方式是子类UIScrollView并符合UIGestureRecognizerDelegate该子类中的 。然后调用这个方法。
class ATScrollView: UIScrollView, UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记为您的手势识别器机制分配适当的委托:
因此,例如:
设置.up方向手势识别器
let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(self.handleGesture(gesture:)))
swipeUp.direction = .up
swipeUp.delegate = self // set delegate
self.addGestureRecognizer(swipeUp)
Run Code Online (Sandbox Code Playgroud)
设置.down方向手势识别器
let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.handleGesture(gesture:)))
swipeDown.direction = .down
swipeDown.delegate = self // set delegate
self.addGestureRecognizer(swipeDown)
Run Code Online (Sandbox Code Playgroud)
也不要忘记遵守委托:
YourViewController: UIGestureRecognizerDelegate
Run Code Online (Sandbox Code Playgroud)
设置同时识别:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
然后继续你的逻辑......
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
23392 次 |
| 最近记录: |