如何判断UIView目前是否被触及?

时间:2012-02-28 07:35:30

标签: uiview touch

有没有办法可以查询UIView以确定它当前是否被触及?我问的原因是因为我使用“touchingBegan”,“touchesEnded”和“touchesMoved”来保持用户手指下的UIView。但是,如果用户非常快地移动他/她的手指并设法“逃离”窗口我想要移除该窗口 我以为我可以使用计时器定期测试每个视图以确定它当前是否被触摸,如果不是,我将删除它。 “IsTouchedProperty”将是完美的。 有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,并使用tracking属性解决了这个问题。来自文档:

  

一个布尔值,指示接收器当前是否为   跟踪与事件相关的触摸。 (只读)

这是一个关于UIControl的方法,但你不是想创建一个吗?

您还可以hitTest次观看。查看the apple docs

答案 1 :(得分:2)

由于UIView不从UIControl继承,因此您需要使用触摸事件对UIView进行子类化并滚动自己的isTouching属性。类似的东西:

// MyView.h
@interface MyView : UIView
@property (nonatomic, assign) BOOL isTouching;
@end


// MyView.m
...

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    self.isTouching = YES;
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesCancelled:touches withEvent:event];
    self.isTouching = NO;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    self.isTouching = NO;
}