Синтаксис цели C: addTarget в UISwipeGestureRecognizer - PullRequest
1 голос
/ 26 января 2012

В настоящее время я работаю над приложением, в котором у пользователя есть возможность либо пролистывать данные, либо использовать кнопку для просмотра данных.У меня проблемы с пониманием, как объединить два бита кода.

Вот код, который я использую для считывания:

- (void)swipeRight:(UISwipeGestureRecognizer*)recognizer
{

if ([questions hasPrevQuestion] == YES) {
    [self vorige:nil];

    }    
}

([self vorige:nil]; вызывает метод для кнопки, поэтому смахивание и кнопка ведут себя одинаково)и мне нужно как-то включить этот код, который применяется к кнопке:

-(void)animationDidEndOnAnswer {

[vorigeButton addTarget:self action:@selector(newQuestion:) forControlEvents:UIControlEventTouchUpInside];

}

Я думаю, что это довольно просто, но я просто не могу понять, как вызывать метод смахивания вместо кнопкиздесь ... я думаю, это просто, потому что я нашел этот пример в справочнике по классу UIGestureRecognizer:

- (void)addTarget:(id)target action:(SEL)action

, но, будучи новичком в Objective-C, я не знаю, что с этим делать.любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 26 января 2012

Решение Ника хорошее.

Если вы хотите вызвать один и тот же метод для считывания и нажатия на кнопку, вы можете настроить ваш swipeRight следующим образом:

- (void)goThrougtData:(id)sender
{
  if( [sender isKindOfClass:[UISwipeGestureRecognizer class]] ) {
    // swipe specific code
  }
  else if( [sender isKindOfClass:[UIButton class]] ) {
    // tap specific code
  }
  if ([questions hasPrevQuestion] == YES) {
    [self vorige:nil];
  }    
}

и в вашем методе init вы добавляете

[mySwipeRecognizer addTarget:self action:@selector(vorige:)];
[vorigeButton addTarget:self action:@selector(vorige:) forControlEvents:UIControlEventTouchUpInside];
1 голос
/ 26 января 2012

- (void)addTarget:(id)target action:(SEL)action - это код, эквивалентный привязке действия кнопки к методу, аналогичному тому, который вы делаете при перетаскивании Ctrl с кнопки на IBAction в Интерфейсном Разработчике.

Итак, если ваш метод называется vorige: и вы хотите, чтобы он вызывался при нажатии кнопки, вы бы сказали:

[vorigeButton addTarget:self action:@selector(vorige:) forControlEvents:UIControlEventTouchUpInside];

Но я не знаю, почему вы захотите сделать это в результате анимации - обычно вы устанавливаете действие кнопки один раз при загрузке представления, а не меняете его во время анимации.

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