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