Как отслеживать длинное удержание для пальца в iPhone?
Вопрос
Как я мог отслеживать событие, такое как экран Touch on iPhone в течение 2 секунд. Как в Safari, чтобы сохранить изображение для изображения, добавленного в UIWebView?
Решение
Создать NSTIMER с +scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
По вашему мнению -touchesBegan:withEvent:
метод и отменить его (используя -invalidate
) в -touchesEnded:withEvent:
. Анкет Если метод, который его точки селектора вызывают, то пользователь удерживал пальцем на вид, на любую продолжительность, на которую вы устанавливаете интервал таймера. Пример:
Интерфейс (.h):
@interface MyView : UIView
...
NSTimer *holdTimer;
@end
Реализация (.m):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evt
{
[holdTimer invalidate];
holdTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(touchWasHeld) userInfo:nil repeats:NO];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)evt
{
[holdTimer invalidate];
holdTimer = nil;
}
- (void)touchWasHeld
{
holdTimer = nil;
// do your "held" behavior here
}
Не связан с StackOverflow