2012-02-28 2 views
1

Есть ли способ, которым я могу запросить UIView, чтобы определить, будет ли он в данный момент касаться? Причина, о которой я прошу, заключается в том, что я использую «touchedBegan», «touchesEnded» и «touchhesMoved», чтобы держать UIView под пальцем пользователя. Однако, если пользователь очень быстро перемещает свой палец и умудряется «убежать» от окна, я хочу удалить это окно.
Я думал, что могу использовать таймер для периодического тестирования каждого вида, чтобы определить, в настоящее время он тронут, если это не так, я удалю его. «IsTouchedProperty» будет идеальным. Любые мысли?Как определить, касается ли UIView в данный момент?

ответ

1

У меня была аналогичная проблема, и она разрешила ее с использованием свойства tracking. Из документации:

Булево значение, указывающее, является ли в данный момент приемником отслеживание касаний, связанных с событием. (только для чтения)

Это метод UIControl, но разве вы не пытаетесь его создать?

Вы также можете посмотреть hitTest. Проверка the apple docs

+2

Просто отметьте, что это не совсем правильно. isTouchInside и isTracking не являются частью UIView. Они из UIControl – ChickensDontClap

+0

Вы совершенно правы. Я обновил свой ответ. – Tom

+0

isTracking также является частью UIScrollView – phatmann

1

Поскольку 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; 
} 
Смежные вопросы