当用户点击并按住我的应用程序中的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 documentation,UIControlEventTouchCancel
事件是由于:
系统事件取消控件的当前触摸。
因此,并不是由于用户输入已结束触摸,而是由于系统事件(例如内存不足警告或应用程序移至后台)。 我不知道为什么您只需按住按钮就可以触发它。
我很确定这与UIResponder
的 touchesCancelled:withEvent:
事件类似(如果不是由事件引起的)。有关此文档的内容稍有详细:
当Cocoa Touch框架收到需要取消触摸事件的系统中断时,将调用此方法。为此,它将生成一个带有UITouchPhaseCancel阶段的UITouch对象。中断可能会导致应用程序不再处于 Activity 状态或视图从窗口中删除