当用户点击并按住我的应用程序中的UIButton时,会触发UIControlEventTouchCancel事件。 Apple UIControl文档没有有关此事件的任何详细说明。为什么会触发?它是干什么用的?

[button addTarget:key action:@selector(keyUp:) forControlEvents:UIControlEventTouchUpInside];
[button addTarget:key action:@selector(keyUp:) forControlEvents:UIControlEventTouchUpOutside];
[button addTarget:key action:@selector(keyCancel:) forControlEvents:UIControlEventTouchCancel];
[button addTarget:key action:@selector(keyDown:) forControlEvents:UIControlEventTouchDown];

最佳答案

According to the documentationUIControlEventTouchCancel事件是由于:

系统事件取消控件的当前触摸。

因此,并不是由于用户输入已结束触摸,而是由于系统事件(例如内存不足警告或应用程序移至后台)。 我不知道为什么您只需按住按钮就可以触发它。

我很确定这与UIResponder touchesCancelled:withEvent: 事件类似(如果不是由事件引起的)。有关此文档的内容稍有详细:

当Cocoa Touch框架收到需要取消触摸事件的系统中断时,将调用此方法。为此,它将生成一个带有UITouchPhaseCancel阶段的UITouch对象。中断可能会导致应用程序不再处于 Activity 状态或视图从窗口中删除

07-26 09:38
查看更多