Я пытаюсь создать такой же «Выбор области», как в приложении «Путь».
Идея состоит в том, чтобы на панели навигации была кнопка, которая заставит контроллер соскользнуть, чтобы открыть «селектор» данных.
Учитывая следующую структуру пользовательского интерфейса:

Основным контроллером является UINavigationController, так как мне нужно добавить дополнительные уровни информации позже.
В основном это работает так:
Приложение начинается с таблицы данных на переднем плане. Пользователь может нажать на данные или на верхнем левом элементе навигации.

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

Код, который удаляет все:
- (IBAction)toggleAreaSelector:(id) sender {
float offsetX = self.tableView.frame.origin.x == 0 ? 300 : -300;
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationCurveEaseIn animations:^{
self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, offsetX, 0);
self.toolBar.frame = CGRectOffset(self.toolBar.frame, offsetX, 0);
self.tableView.frame = CGRectOffset(self.tableView.frame, offsetX, 0);
} completion:^(BOOL finished) {
self.navigationController.navigationBar.userInteractionEnabled = offsetX == 300 ? NO : YES;
self.tableView.userInteractionEnabled = offsetX == 300 ? NO : YES;
}];
}
Проблема в следующем: Я не могу щелкнуть первый элемент в селекторе «Область 0». Я думаю, это потому, что UINavigationBar
по-прежнему удерживает «сенсорный» замок в этой области и получает все касания.
Возможно, это также связано с тем, что при отображении в конструкторе интерфейсов я также вижу, что мой селектор находится на позади на UINavigationBar
. В конце концов, это может быть неправильный подход?
Спасибо за любые идеи.