Как удержать нажатой двойную кнопку на UIButton от отмены действия? - PullRequest
0 голосов
/ 11 октября 2011

У меня есть UIButton, который при нажатии начинает поиск данных.Но во время поиска, если пользователь снова нажимает на кнопку, он отменяет поиск.

Соответствующий код:

    - (void)searchAction:(UIButton *)sender {

    [sender removeTarget:self action:@selector(searchAction:) forControlEvents:UIControlEventTouchUpInside];
    [sender addTarget:self action:@selector(cancelSearch:) forControlEvents:UIControlEventTouchUpInside];  
    [animatedImages startAnimating];
    //action that should be done

}

- (void)cancelSearch:(UIButton *)sender {
    [sender removeTarget:self action:@selector(cancelSearch:) forControlEvents:UIControlEventTouchUpInside];
    [sender addTarget:self action:@selector(searchNearbyAction:) forControlEvents:UIControlEventTouchDown];
    [animatedImages stopAnimating];

}

Таким образом, основная идея заключается в том, что когда я нажимаю на него, его функция меняется наотмена и наоборот

Проблема в том, что когда я нажимаю на него в первый раз, он вызывает searchAction, а затем вызывает cancelSearch без причины.

Кто-нибудь знает, почему это может происходить?

1 Ответ

5 голосов
/ 11 октября 2011

Обходной путь - добавить BOOL в качестве переменной экземпляра

BOOL canCancel;

, а затем выполнить следующее

- (void)buttonClicked:(UIButton *)sender {
      if (!canCancel) {
           // action that should be done
           canCancel = YES;
      } else if (canCancel) {
           // cancel action
           canCancel = NO;
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...