1

Короче говоря, если alpha моего UINavigationBar установлен в 0, я хочу, чтобы все касания переходили к базовому виду (который с точки зрения контроллера вида с навигационной панелью был бы только self.view). Если это 1.0, я хочу, чтобы он их сохранил.Как использовать hitTest: withEvent: отправлять прикосновения из моей навигационной панели в основное представление при определенных обстоятельствах?

Я подклассифицировал UINavigationBar, и я пытаюсь переопределить hitTest:withEvent:, но я действительно смущен тем, что делаю, и поиск мало помог.

Как это определить? Если альфа-значение 0, отправьте сообщение с адресом self.view, в противном случае войдите в навигационную панель?

ответ

1

Вам нужно будет отправить ссылку своего вида на панель навигации, установить ее как свойство под названием behindView или что-то в этом роде.

if(self.alpha == 0.0f) 
{ 
    return behindView; 
} 
return [super hitTest:point withEvent:event]; 

Другим способом было бы переопределить pointInside:withEvent: так:

if(self.alpha == 0.0f) 
{ 
    return NO; 
} 
return [super pointInside:point withEvent:event]; 
+0

Это не дозвонились, если я нажимаю панель навигации, когда его альфа устанавливается в 0. –

+0

Это имеет смысл, на самом деле. Вы уверены, что рамка вашего представления расширена за тем, где находится невидимая панель навигации? Контроллер навигации установит верхний угол обзора вашего контроллера над панелью навигации, поэтому вам может потребоваться разместить весь ваш контент во внутреннем представлении, имеющем 'frame.origin.y'' -navBarHeight', и это представление получится ваши прикосновения. – jhabbott

+0

В этот момент я мог бы также использовать 'setNavigationBarHidden:' ... –

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