如何使UIView忽略触摸而不释放它?

我有一个UIScrollView顶部的透明UIView。 UIView通过检查三个touchesMoved事件来确定是否允许滚动视图滚动。 事件发生后,我希望视图禁用用户交互,以便滚动会发生。 用户甚至不应该注意到延迟。

但是,将视图的userInteractionEnabled设置为NO后,它会一直声明所有touchesMoved事件,直到它被释放。 这意味着用户在能够滚动之前被迫放开视图。

在视图被释放之前,使用hitTest将不起作用。 hitTest在移动时不会被调用。

我会将触摸事件发送到UIScrollView,但由于它具有自己的隐藏触摸处理,它很高兴地忽略这些事件。

任何使UIView停止声明触摸事件而不必放弃它的方法?


隐藏UIView。 根据文档:

隐藏的视图从其窗口中可视化消失,并且不会接收输入事件

有关更多信息,请参阅类参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html


尝试取消触摸:

如何取消一系列UITouch事件?

ps如果有必要我假设你正在向下一个响应者传播触动:

- (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];
}
链接地址: http://www.djcxy.com/p/44261.html

上一篇: How to make a UIView ignore touches without releasing it?

下一篇: how to get the position of an object within a UIView, within a UIScrollView