谁知道哪个是以下手势: 想象一下,我在某个区域内点击(比如一个按钮),我按住手指, 不释放它,并将手指移动到区域外? 有什么姿势吗?
我有一个按钮,它以选定/突出显示状态启动,但如果用户点击 在它上面(用手指),不释放他/她的手指,将他/她的手指移动到按钮区域之外,我的按钮被取消选择 - 这是我不想要的。有人可以帮忙吗?
答案 0 :(得分:0)
您需要处理“Touch Up Outside”按钮事件。
== EDIT ==
您可以覆盖UIControl
的{{1}}方法以获得所需的行为:
*TrackingWithTouch:withEvent:
实施
@interface CustomButton : UIButton
@end
更改突出显示的属性,例如按下按钮时:
@interface CustomButton()
// Auxiliary property
@property(nonatomic, assign) BOOL isHighlightedBeforeTouch;
@end
@implementation CustomButton
-(BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
self.isHighlightedBeforeTouch = self.highlighted;
return [super beginTrackingWithTouch:touch withEvent:event];
}
-(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
BOOL result = [super continueTrackingWithTouch:touch withEvent:event];
if( self.isHighlightedBeforeTouch && !CGRectContainsPoint(self.bounds, [touch locationInView:self]) ) {
dispatch_async(dispatch_get_main_queue(), ^{
self.highlighted = self.isHighlightedBeforeTouch;
});
}
return result;
}
-(void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
dispatch_async(dispatch_get_main_queue(), ^{
self.highlighted = self.isHighlightedBeforeTouch;
});
[super endTrackingWithTouch:touch withEvent:event];
}
@end
答案 1 :(得分:0)
您需要使用UIGesuture recongnizers:UIPanGestureRecognizer。