我试图检测用户在视图中触摸时的位置。该视图包含一些按钮和其他UIKit控件。我想检测这些触摸事件,但不会消耗它们。检测触摸并触摸包含UIControls的视图
我已经试过两种方法,但也已经足够了:
首先,我增加了一个透明的覆盖重写-touchesBegan:withEvent:方法和-touchesEnded:withEvent:方法和事件与
转发到下一个响应者[self.nextResponder touchesBegan:touches withEvent:event]
但是,似乎UIKit对象忽略所有转发的事件。
接下来,我尝试覆盖-pointInside:withEvent:和-hitTest:withEvent:。这很好地检测触摸下来事件,但是pointInside ::和hitTest ::不会在触摸时调用up(即[[[allEvent] anyObject]阶段]永远不会等于UITouchPhaseEnded。
在不干扰与底层UIControls交互的情况下,检测触摸和触摸事件的最佳方式是什么?
我没有看到为什么响应者会忽略'touchesBegan:withEvent:',因为它已经被发送到其他具有相同事件的其他人。这违背了响应者链条的重点。你确定'nextResponder'正在返回一些东西吗? –
@Peter“UIKit框架的类没有设计用来接收未绑定到它们的触摸;从程序上讲,这意味着UITouch对象的view属性必须持有对框架对象的引用才能触摸如果你想有条件地向你的应用程序中的其他应答者转发接触,所有这些应答者应该是你自己的UIView子类的实例。“ (http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html) – tba