swift在uitextview中横向触摸时触发触摸监听但是在竖向滑动时不触发
要实现在UITextView中横向触摸时触发UITapGestureRecognizer监听但是在竖向滑动时不触发UITapGestureRecognizer,您可以结合使用UIGestureRecognizerDelegate和UIScrollViewDelegate来实现。
首先,您需要将UITextView的isScrollEnabled属性设置为false,以防止滑动视图时触发手势识别事件。然后,您可以通过实现UIGestureRecognizerDelegate协议中的gestureRecognizer(_:shouldReceive:)方法来控制手势识别器是否应该接受触摸事件。在这个方法中,您可以检查手势的方向,并根据方向返回true或false,以告诉手势识别器是否应该接受该触摸事件。
接下来,您需要使用UIScrollViewDelegate协议中的scrollViewDidScroll(_:)方法来检查滚动视图的滚动方向。在这个方法中,您可以检查滚动视图的滚动方向,并将手势识别器的isEnabled属性设置为true或false,以启用或禁用手势识别器。
下面是一个示例代码,演示了如何在UITextView中实现此功能:
class MyViewController: UIViewController, UIGestureRecognizerDelegate, UIScrollViewDelegate { |
在上面的示例中,我们首先将UITextView的isScrollEnabled属性设置为false,以禁用滚动。然后,我们使用UIGestureRecognizerDelegate协议中的gestureRecognizer(_:shouldReceive:)方法来检查手势的方向,并根据方向返回true或false,以告诉手势识别器是否应该接受该触摸事件。
最后,我们使用UIScrollViewDelegate协议中的scrollViewDidScroll(_:)方法来检查滚动视图的滚动方向,并将手势识别器的isEnabled属性设置为true或false,以启用或禁用手势识别器。