Жест касания iOS в UIScrollview - PullRequest
7 голосов
/ 11 сентября 2011

У меня есть RootViewController и связанный с ним файл nib или xib. Это nib загружается при запуске приложения. Этот nib файл содержит UIScrollView. В этом скроллвью я поместил еще один сгенерированный файл nib - newNib.xib.

В этом newNib.xib я внес изменения в конструктор интерфейса, чтобы ответить на RootViewController, т. Е. Пользовательский класс - RootViewController. Затем я связал несколько объектов UIView, которые я создал в RootViewController. Пока все хорошо ...

Я определил некоторые tapGestureRecognisers в RootViewController для UIViews, определенные в newNib.xib, но они не реагируют на события касания. Нажмите События, которые я определил в RootViewController, как это -

UITapGestureRecognizer *messagesTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(messagesBucketTap:)];
[messagesTap setNumberOfTapsRequired:1];
[messagesTap setNumberOfTouchesRequired:2];
[self.messagesSnippet addGestureRecognizer:messagesTap];
[messagesTap release];

здесь self.messagesSnippet присутствует в newNib.xib Также я загружаю xib в RootViewController примерно так -

[[NSBundle mainBundle] loadNibNamed:@"newNib" owner:self options:nil];

Но все же я не могу получить tapGesture для селектора (messagesBucketTap). Что я делаю не так?

1 Ответ

6 голосов
/ 29 октября 2011

Наиболее вероятная причина в том, что вы забыли установить делегат распознавателя жестов касания , например. [messagesTap setDelegate:self].

Предполагая, что -messagesBucketTap: объявлено в том же классе, измените код на:

    UITapGestureRecognizer *messagesTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(messagesBucketTap:)];
    [messagesTap setDelegate:self];
    [messagesTap setNumberOfTapsRequired:1];
    [messagesTap setNumberOfTouchesRequired:2];
    [self.messagesSnippet addGestureRecognizer:messagesTap];
    [messagesTap release];

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

- (void)messagesBucketTap:(UITapGestureRecognizer *)gestureRecognizer;

а не

- (void)messagesBucketTap;

Кроме того, ты стучишь один раз двумя пальцами? Наконец, убедитесь, что userInteractionEnabled равно ДА на UIView и что exclusiveTouch равно NO на UIScrollView

...