2012-02-22 2 views
2

В моем проекте у меня есть необходимость использовать UIButton (или другой компонент) для обработки событий с помощью длительного нажатия. Позвольте мне объяснить, я должен сделать это, я держу кнопку таймера, чтобы подсчитать секунды и отпустить до упора, я попытался с управлением UILongPressGestureRecognizer, но это не так, потому что я вспоминаю событие, когда кнопка удерживается но только если я пошевелю пальцем, но я хочу, чтобы таймер ушел и подсчитал все время, в течение которого кнопка удерживается (при неподвижном палец) и перестает считать, когда палец отпущен.Длительное нажатие UIButton с фиксированным пальцем

Кто-нибудь знает, как мне помочь?

+0

Я не могу понять ваш вопрос. Можете ли вы попробовать сказать это по-другому? –

+0

Привет, мне нужно нажимать кнопку и подсчитывать, как второй раз нажимать ее (для того, как время, когда палец был на нем), если я держу палец на кнопке в течение пяти секунд, начните таймер и посчитайте 5 секунд, а затем я остановить таймер остановки кнопки. – AleMal

ответ

6

Используйте эти два метода кнопки событий. touchDown вызывается, когда вы нажимаете кнопку, и будет вызываться touchUp, когда вы поднимаете палец с кнопки. Рассчитайте разницу во времени между этими двумя методами. Также вы можете запустить таймер в touchDown и остановить/перезапустить его в touchUp.

//connect this action with Touch up inside 
- (IBAction)touchUp:(id)sender { 
    NSLog(@"up"); 
} 

//connect this to tocuh down 
- (IBAction)touchDown:(id)sender{ 
    NSLog(@"down"); 
} 

Обновлено При кодировании вы можете написать, как этот

[btn addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; 
[btn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; 

и XIb enter image description here

+0

спасибо, но как можно подключить два IBAction на моей кнопке? – AleMal

+0

Я обновил свой ответ .. –

+0

большое спасибо !!!! – AleMal

0

То же самое я сделал ... Как и сказал о UILongPressGestureRecognizer, я не могу это понять ... но вы можете написать код ur внутри -(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { }. Я сделал то же самое, используя этот метод и получил успешный результат .. :). Вы даже не нужно, чтобы добавить таймер, а вы можете использовать ...

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
             initWithTarget:self action:@selector(handleLongPress:)]; 
lpgr.minimumPressDuration = 1.0; 
lpgr.delegate = self; 

Я думаю, что это прекрасно работает ..

+0

Спасибо, но он также работает, если я держу палец на кнопке? Я попытался использовать UILongPressGestureRecognizer, но он работал, только если я переместил мой палец – AleMal

+0

Он должен работать. Если у вас нет этой кнопки в UIScrollView или у вас есть UTIestureRecognizer, который мешает этому. –

Смежные вопросы