Кнопка UIB не работает, когда в суперпредставление добавлен жест с одним касанием - PullRequest
11 голосов
/ 10 января 2011

У меня есть UIButton, настроенный и подключенный к действию в моем контроллере представления, как обычно. Просто это само по себе отлично работает.

Теперь я добавил следующее к моему контроллеру представления, чтобы настроить одно касание:

- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer * singleTapGesture = [[UITapGestureRecognizer alloc] 
                                             initWithTarget:self
                                             action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleTapGesture];
[singleTapGesture release]; }

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

Как сделать так, чтобы кнопка работала, когда я касался кнопки, и жест касания работал, когда я касался где-либо еще в представлении?

Ответы [ 3 ]

13 голосов
/ 21 января 2011

Ваша проблема похожа на этот вопрос, на который, надеюсь, был дан ответ;)

UIButton внутри представления, имеющего UITapGestureRecognizer

10 голосов
/ 22 апреля 2013

Вот простое решение

singleTapGesture.cancelsTouchesInView = NO;
1 голос
/ 10 января 2011

Эндрю,

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

, поэтому я предлагаю создать пользовательскую кнопкуРазмер экрана (320x460 при условии, что отображается серая полоса), поместите его обратно всех объектов в IB.К этому времени вы сможете увидеть кнопку UIB с почти непрозрачностью почти 0%.

и из IB перетащите опцию выбора пользовательской кнопки к владельцам файлов и выберите функцию, которую хотите вызвать, и вывсе готово.

Это проще, чем вы пытались в своем коде

...