Длительное нажатие UIButton с пальцем

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

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

 AleMal22 февр. 2012 г., 07:29
Привет, мне нужно нажать кнопку и посчитать, сколько секунд я нажимаю на нее (сколько раз мой палец находился на ней), если я держу палец на кнопке в течение пяти секунд, запускается таймер и считается 5 секунд, а затем я отпускаю Кнопка таймера остановки.
 rob mayoff22 февр. 2012 г., 07:16
Я не могу понять ваш вопрос. Можете ли вы сказать это по-другому?

Ответы на вопрос(2)

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

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

Я думаю, что это работает отлично ..

 AleMal22 февр. 2012 г., 08:10
Спасибо, но это также работает, если я удерживаю блокировку пальца на кнопке? Я пытался использовать UILongPressGestureRecognizer, но это работало, только если я двигал пальцем
 Rok Jarc22 февр. 2012 г., 09:39
Он должен работать. Если у вас нет этой кнопки в UIScrollView или у вас есть другой UIGestureRecognizer, который мешает этой.
Решение Вопроса

Используйте эти два метода для событий кнопок.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];

и в кибе

 AleMal22 февр. 2012 г., 09:14
спасибо а как можно соединить два IBAction на моей кнопке?
 Inder Kumar Rathore22 февр. 2012 г., 10:12
Я обновил свой ответ ..
 AleMal22 февр. 2012 г., 10:46
большое спасибо!!!!

Ваш ответ на вопрос