如何确定当前是否正在触摸UIView?

如何确定当前是否正在触摸UIView?,uiview,touch,Uiview,Touch,是否有一种方法可以查询UIView以确定它当前是否正在被触摸?我问这个问题的原因是因为我使用“TouchedBegind”、“ToucheSEnd”和“touchesMoved”将UIView保存在用户的手指下。但是,如果用户快速移动手指并设法“退出”窗口,我想删除该窗口。 我在想,我可以使用一个计时器定期测试每个视图,以确定它当前是否正在被触摸,如果没有,我将删除它。“IsTouchedProperty”就完美了。 有什么想法吗?我遇到了一个类似的问题,通过使用跟踪属性解决了这个问题。从文件中

是否有一种方法可以查询UIView以确定它当前是否正在被触摸?我问这个问题的原因是因为我使用“TouchedBegind”、“ToucheSEnd”和“touchesMoved”将UIView保存在用户的手指下。但是,如果用户快速移动手指并设法“退出”窗口,我想删除该窗口。
我在想,我可以使用一个计时器定期测试每个视图,以确定它当前是否正在被触摸,如果没有,我将删除它。“IsTouchedProperty”就完美了。
有什么想法吗?

我遇到了一个类似的问题,通过使用
跟踪属性解决了这个问题。从文件中:

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

这是UIControl上的一种方法,但您不尝试创建一种吗


您还可以
hitTest
视图。选中

,因为UIView不从UIControl继承,所以您需要将UIView子类化,并使用触摸事件滚动您自己的
i触摸
属性。比如:

// 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;
}

请注意,这并不完全正确。iTouchInside和iTracking不是UIView的一部分。它们来自UIControlisTracking也是UIScrollView的一部分