谁知道下面的手势是什么:想象一下我在某个区域(比如一个按钮)内单击,我按住手指,不松开它,然后将手指移到该区域之外?有什么手势吗?
我有一个以选中/突出显示状态启动的按钮,但是如果用户单击它(使用手指),没有松开他/她的手指,将他/她的手指移到按钮区域之外,我的按钮会被取消选择- 这是我不想要的。有人可以帮忙吗?
谁知道下面的手势是什么:想象一下我在某个区域(比如一个按钮)内单击,我按住手指,不松开它,然后将手指移到该区域之外?有什么手势吗?
我有一个以选中/突出显示状态启动的按钮,但是如果用户单击它(使用手指),没有松开他/她的手指,将他/她的手指移到按钮区域之外,我的按钮会被取消选择- 这是我不想要的。有人可以帮忙吗?
您需要处理“Touch Up Outside”按钮事件。
==编辑==
你可以重写UIControl
的*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
更改突出显示的属性,例如按下按钮时:
-(IBAction)buttonPressed:(UIButton*)sender
{
dispatch_async(dispatch_get_main_queue(), ^{
[sender setHighlighted:![sender isHighlighted]];
});
}
你需要使用,UIGesuture 识别器:UIPanGestureRecognizer。