Панель навигации показывает/скрывает

У меня есть приложение с панелью навигации, состоящей из 2 кнопок панели. Я хотел бы скрыть и показать эту панель навигации, когда пользователь дважды касается экрана.

Первоначально, панель навигации должна быть скрыта. Когда пользователь дважды касается экрана, панель навигации должна придумать анимацию, как то, что видно в фотогалерее iPhone.

Как я могу сделать что-то это? Предложения всегда ценятся.

155
задан Robotnik 15 August 2012 в 01:22
поделиться

1 ответ

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

Чтобы скрыть панель навигации:

[[self navigationController] setNavigationBarHidden:YES animated:YES];

Чтобы показать ее:

[[self navigationController] setNavigationBarHidden:NO animated:YES];

Документация для этого метода доступна здесь.

Чтобы услышать "двойной щелчок" или двойное нажатие, создайте подкласс UIView и сделайте экземпляр этого подкласса свойством view контроллера представления.

В подклассе представления переопределите его -touchesEnded:withEvent: метод и подсчитайте, сколько касаний вы получили за определенный промежуток времени, измерив время между двумя последовательными касаниями, возможно, с помощью CACurrentMediaTime(). Или проверьте результат из [touch tapCount].

Если вы получаете два касания, ваше подклассифицированное представление выдает NSNotification которое ваш контроллер представления зарегистрировал для прослушивания.

Когда ваш контроллер представления слышит уведомление, он запускает селектор, который либо скрывает, либо показывает панель навигации, используя вышеупомянутый код, в зависимости от текущего видимого состояния панели навигации, доступ к которому осуществляется через чтение свойства isHidden панели навигации.

EDIT

Часть моего ответа, касающаяся обработки событий касания, вероятно, будет полезна еще до iOS 3.1. В наши дни класс UIGestureRecognizer вероятно, лучше подходит для обработки двойных касаний.

EDIT 2

Swift способ скрыть навигационную панель:

self.navigationController?.setNavigationBarHidden(true, animated: true)

Чтобы показать ее:

self.navigationController?.setNavigationBarHidden(false, animated: true)
379
ответ дан 23 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: