识别iOS中的手势

时间:2012-12-25 12:20:58

标签: ios

谁知道哪个是以下手势: 想象一下,我在某个区域内点击(比如一个按钮),我按住手指, 不释放它,并将手指移动到区域外? 有什么姿势吗?

我有一个按钮,它以选定/突出显示状态启动,但如果用户点击 在它上面(用手指),不释放他/她的手指,将他/她的手指移动到按钮区域之外,我的按钮被取消选择 - 这是我不想要的。有人可以帮忙吗?

2 个答案:

答案 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。