iphone, приложение думает, что я держал кнопку 2 раза - PullRequest
0 голосов
/ 10 августа 2011

Я пошел такой класс

@interface UIGestureHolder : UILongPressGestureRecognizer {

    int tag;
}
@property (nonatomic, readwrite) int tag;

@end



@implementation UIGestureHolder
@synthesize tag;
@end

Затем я назначаю это кнопке, чтобы при ее удержании вызывалось нажатие кнопки:

UIGestureHolder *longpressGesture = [[UIGestureHolder alloc] initWithTarget:self action:@selector(buttonHeld:)];
        longpressGesture.minimumPressDuration = 1.5;

        [longpressGesture setDelegate:self];
        longpressGesture.tag=i;
        [contactButton addGestureRecognizer:longpressGesture];
        [longpressGesture release];

Buttonheld функция:

-(void)buttonHeld:(id)sender
{


    int i = ((UIControl *) sender).tag;

    ......

}

Когда я держу кнопку в течение 1,5 секунд или в любое другое время, которое мне нужно, среда выполнения сообщает мне, что я держал кнопку два раза по 1,5 каждый, почему? Это вызывает у меня исключения позже.

Почему среда выполнения думает, что я два раза держу кнопку?

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Распознаватели жестов сообщают вам, когда изменяются их состояния.Измените код на:

-(void)buttonHeld:(UILongPressGestureRecognizer*)longPressRecognizer 
 {
    if(longPressRecognizer.state == UIGestureRecognizerStateBegan) 
    {
        int i = ((UIControl *) sender).tag;
        ......
    }
}
0 голосов
/ 10 августа 2011

Может быть, на кнопке также включена функция однократного нажатия? Поведение кнопки - нажать на нее один раз, и что-то происходит, верно?

При назначении responder на вашу кнопку, что вы сделали? Попробуйте отключить это и посмотреть, если вы получите то же самое ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...