这个api会令当前的所有手指操作失效,即令所有的UITouch变成cancelled状态,所有的UIView和UIGestureRecognizer都会触发touchesCancelled:withEvent:事件。
使用场景:
1. 模拟UIPopoverController时的行为,当popover弹出时,其他手势都应该被cancelled掉,从而保证popover弹出后继续移动手指不会再产生事件。(UIPopoverController就有使用这个函数,UIActionSheet应该也有,UIAlertView不确定,因为它有自己的window)
2. 响应多指操作时,如果发生旋转屏幕的事件,这时候后续的响应一般很难处理,每个touch都得自己计算旋屏后的位置,不如干脆不允许用户在旋屏后操作算了,这时就可调用这个函数。
调用方法:
SEL sel = NSSelectorFromString([@"_cancel" stringByAppendingString:@"AllTouches"]); // Private API assert([[UIApplication sharedApplication] respondsToSelector:sel]); [[UIApplication sharedApplication] performSelector:sel];