Я пытаюсь получить долгое нажатие клавиши на кнопке, работающей в объективе c для iPhone.
Вот код, который я собрал для GestureRecognizer:
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
longPressGesture.minimumPressDuration = 1.0; //1 second
longPressGesture.delegate = self;
[deleteButton addGestureRecognizer:longPressGesture];
[longPressGesture release];
Ивот функция, которую я использую в селекторе для вызова при обнаружении длительного нажатия клавиши.
-(void)handleLongPress:(UILongPressGestureRecognizer *) gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
NSLog(@"Got handle long key press");
NumLabel.text = @"";
}
}
Я также добавил следующие функции как часть моего класса делегата, но, похоже, они не имеютоказал какое-либо влияние:
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
return YES;
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return NO;
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
return YES;
}
Моя проблема в том, что это иногда работает, но иногда снова не работает, большую часть времени я получаю вызов handleLongPress, и он отлично работает, но очень часто, когда кнопкая нажимаю и удерживаю, пока ничего не получу, пока не оторву палец от кнопки, и на этом этапе мой обычный код кнопки будет запущен.
Я что-то пропустил в руководствах или кто-нибудь может определить, почему это иногда работаетно я ничего не получаю в других случаях?
РЕДАКТИРОВАТЬ
Я на самом деле думаю, что проблема заключается в способе нажатия кнопки, если я нажимаюудерживайте кнопку нажатой и удерживайте ее, тогда она работает нормально, однако, если мой палец слегка нажимает на кнопку, то функция handleLongPress не вызывается.
Я предполагаю, что это потому, что она распознает ее какотдельный жест?Есть ли способ убедиться, что handleLongPress вызывается, пока кнопка удерживается нажатой, даже если палец вообще перемещается по кнопке?