我在UIScrollView上有一个透明的UIView。 UIView通过检查三个touchesMoved事件来确定是否允许滚动视图滚动。在事件之后,我希望视图禁用用户交互,因此将进行滚动。用户甚至不应该注意到延迟。
但是,将视图的userInteractionEnabled设置为NO后,它会一直声明所有touchesMoved事件,直到它被释放。这意味着用户在能够滚动之前被迫放开视图。
在视图发布之前,使用hitTest也不会有效。移动时不会调用hitTest。
我会将触摸事件发送到UIScrollView,但由于它有自己隐藏的触摸处理,它很高兴忽略了那些。
任何方式让UIView停止声称触摸事件而不必放弃它?
答案 0 :(得分:3)
隐藏UIView。根据文件:
隐藏视图从窗口可视地消失,并且不会接收输入事件
有关详情,请参阅课程参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html
答案 1 :(得分:3)
尝试取消接触:
How to cancel a sequence of UITouch events?
P.S。如果有必要,我假设你正在将接触传播给下一个响应者:
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
[[self nextResponder] touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event {
[super touchesMoved:touches withEvent:event];
[[self nextResponder] touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
[[self nextResponder] touchesEnded:touches withEvent:event];
}