2013-10-07 1 views
0

По какой-то причине мой UITapGestureRecognizer блокирует нажатия кнопок панели инструментов при добавлении распознавателя к self.view, и я не хочу этого делать. В shouldReceiveTouch Я хочу вернуть НЕТ, если элемент является кнопкой панели инструментов.Как игнорировать ответвление, если пользователь нажал на UIBarButtonItem?

Как это сделать, однако? Элементы не UIBarButtonItems, по-видимому, потому что когда я помещаю оператор if, чтобы проверить, является ли touch.view этого класса, он игнорирует его. Если я поставил там контрольную точку и проверил touch.view, ее класс будет UIToolbarTextButton. Но [UIToolbarTextButton class] Я получаю сообщение об ошибке «использование незаявленного идентификатора UIToolbarTextButton».

Могу ли я сказать, если это подкласс UIToolBar? Что мне делать?

+0

Не могли бы вы предоставить ваш код? Я могу использовать как жест жеста, так и кнопку панели без каких-либо проблем. Не видя своего кода, сложно дать предложение. – user2734323

ответ

0

Без какого-либо кода это трудный вопрос для ответа ... Однако похоже, что вы добавляете распознаватель Tapgesture в тот же вид, что и панель инструментов ... Вы можете проверить координаты, чтобы увидеть, находятся ли они в пределах CGrect из uitoolbar ... но на самом деле я бы рекомендовал создать представление, которое содержит 2 подзаголовка: одна ваша панель инструментов, другая - основная часть вашего представления ... затем добавьте tapGesture только в mainView. Удачи

+0

Когда я создаю так называемый mainView, как мне его расширить, от панели навигации до панели инструментов внизу и поддерживать это расстояние для устройств с 3,5 и 4 дюймами? –

+0

Самый простой способ добиться этого - использовать xib или раскадровку. как я сказал, вы создаете два подзаголовка. один для Mainview и другой для вашей панели навигации. – Jeremie

0

Лучшее решение - не добавлять UITapGestureRecognizer в self.view.

Добавить новый вид с помощью Interface Builder, который охватывает всю область, но область панели инструментов.

Вставьте все свои элементы управления в него и добавьте к нему жгут.

Альтернатива: Добавьте это в функцию ViewDidLoad или где-нибудь, где вы найдете более подходящее.

for (UIView *v in [toolbar items]) 
{ 
    v.tag = 5; // tag tool bar items 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 

    if (touch.view.tag == 5) 
     return NO; 
    return YES; 
} 
+0

Когда я создаю так называемый mainView, как мне заставить его простираться от панели навигации до панели инструментов внизу и поддерживать это расстояние для устройств на 3,5 и 4 дюйма? –

+0

, если какое-либо из решений сработало для вас. пожалуйста, примите ответ. – hasan83

Смежные вопросы