有没有办法在 iOS 中中断活动的 UITouch
Posted
技术标签:
【中文标题】有没有办法在 iOS 中中断活动的 UITouch【英文标题】:Is there a way to interrupt an active UITouch in iOS 【发布时间】:2014-02-11 20:17:41 【问题描述】:我有一个 UIScrollView,其 'bounces' 属性设置为 YES。 当 contentOffset 移过屏幕顶部时,我会显示一个类似于邮件程序的动画活动指示器。
如果在某个时候我可以模仿用户抬起手指,那就太好了——实际上取消了gestureReconizer中的触摸并强制touchesEnded。
在 ios 中,有没有办法中断活动的触摸并完全取消它,或者可能将它传递到无处或不会悄悄地响应它的视图?这是一个活跃的 UITouch。大多数(如果不是全部)方法都是在手指触摸屏幕之前设置的。在这种情况下它们无效。
我寻找直接取消 UITouches 的方法,完全取消用户交互,甚至尝试直接以活动滚动视图的方式简单地插入视图,但没有效果。
有没有办法做到这一点,还是被苹果之神严厉禁止?
【问题讨论】:
【参考方案1】:您是在使用任何自定义手势识别器还是仅使用常规滚动视图行为?
取消手势识别器的一种方法是禁用并再次启用它。
gesture.enabled = NO;
gesture.enables = YES;
如果您使用常规的滚动视图行为,我会建议使用相同的方法,但要使用 userInteractionEnabled 属性
scrollView.userInteractionEnabled = NO;
scrollView.userInteractionEnabled = YES;
或许:
scrollView.scrollEnabled = NO;
scrollView.scrollEnabled = YES;
【讨论】:
从我执行的测试中,这些属性都需要在触摸开始之前设置。我现在正在学习的是我走错了启蒙之路,我需要子类:***.com/questions/1685956/uiscrollview-touchesbegan/… 否,如果您在触摸过程中禁用手势、滚动或交互并重新启用,则触摸将被取消。 所以,我没有测试禁用手势本身,但我确实在滚动视图上测试了这两种方法。 scrollView.userInteractionEnabled = NO 并没有中断交互,但是一旦触摸结束,我就无法滚动滚动视图。另一方面,关闭 scrollEnabled 关闭了业务,我这样做了:CGPoint SlideOffset = verticalSlide.contentOffset; verticalSlide.scrollEnabled = NO; verticalSlide.contentOffset = SlideOffset; [UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:(void (^)(void)) ^ verticalSlide.contentOffset = CGPointZero; completion:^(BOOL finished) verticalSlide.scrollEnabled = YES;];
以上是关于有没有办法在 iOS 中中断活动的 UITouch的主要内容,如果未能解决你的问题,请参考以下文章