目前,UIControlEventTouchDragExit
仅在我将按钮拖离按钮 100 像素时触发。我想自定义此行为并将该范围调整到 25 像素左右,但我对编程还比较陌生,从来不需要重写/自定义这样的内置方法。
我在这里的一些其他帖子中读到我需要子类化 UIButton
(或者甚至 UIControl
?),并覆盖 -( BOOL) beginTrackingWithTouch: (UITouch *) touch withEvent: (UIEvent *) event
和相关方法,但我真的不知道从哪里开始这样做。
任何人都可以就如何实现这一目标提供一些建议吗?非常感激! ^_^
最佳答案
像这样覆盖 continueTrackingWithTouch:withEvent: 以在默认间距内发送 DragExit/DragOutside 事件:
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
CGFloat boundsExtension = 25.0f;
CGRect outerBounds = CGRectInset(self.bounds, -1 * boundsExtension, -1 * boundsExtension);
BOOL touchOutside = !CGRectContainsPoint(outerBounds, [touch locationInView:self]);
if(touchOutside)
{
BOOL previousTouchInside = CGRectContainsPoint(outerBounds, [touch previousLocationInView:self]);
if(previousTouchInside)
{
NSLog(@"Sending UIControlEventTouchDragExit");
[self sendActionsForControlEvents:UIControlEventTouchDragExit];
}
else
{
NSLog(@"Sending UIControlEventTouchDragOutside");
[self sendActionsForControlEvents:UIControlEventTouchDragOutside];
}
}
return [super continueTrackingWithTouch:touch withEvent:event];
}
关于ios - UIControlEventTouchDragExit 在距 UIButton 100 像素时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340122/