0

Хорошо, это странно, и я могу легко воспроизвести его с помощью нового проекта.UINavigationBar не отвечает после отмены поиска UITableView в контроллере nav в панели вкладок в popover

Вот настройка:
У меня есть UISplitViewController. В левой части у меня есть UITabBarController. В этом контроллере панели вкладок есть два UINavigationControllers. В контроллерах навигации у меня есть UITableViewControllers. В этих табличных представлениях есть строки поиска.

Хорошо, что происходит с этой настройкой, так это то, что если я в портретном режиме и открою этот вид в popover, и я начну поиск в одном из представлений таблицы и отмените его, панель навигации перестанет реагировать. То есть, кнопка «назад», а также правая боковая кнопка не могут быть нажаты.

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

Таким образом, проблема, похоже, происходит внутри popover.

Я также заметил, что если я выполняю поиск, но нажимаю на элемент в результатах поиска, который в конечном итоге загружает что-то в «подробный вид» разделенного вида и отклоняет popover, а затем возвращается к затем нажмите кнопку «Отмена» для поиска, панель навигации реагирует.

Мое приложение является универсальным приложением и использует один и тот же контроллер панели вкладок в интерфейсе iPhone и работает там без этой проблемы.


Как я уже упоминал выше, я могу легко воспроизвести это с помощью нового проекта. Вот шаги, если вы хотите попробовать это сами:

  • начать новый проект - Разделить

  • создать новый класс UITableViewController (я назвал TableViewController)

    • раскомментируйте вне viewDidLoad, а также строку rightBarButtonItem в viewDidLoad (так что у нас будет кнопка Edit на панели навигации)

    • ввести любые значения, которые вы хотите вернуться из numberOfSectioinsInTableView и методы numberOfRowsInSection

  • открытого MainWindow.XIB и сделайте следующее:

    • Обратите внимание, что вам необходимо будет просмотр XIB в среднем «режиме просмотра», так что вы можете расширить содержание пунктов

    • перетащить панель вкладок контроллер в XIb заменить деталь Навигационный контроллер

    • перетащить навигационная контроллер в XIb в качестве другого элемента под Tab Bar Controller

    • удаляемых двух других контроллеров зрения, что re под контроллером панели вкладок (так что теперь на нашей панели вкладок имеется только один навигационный контроллер)

    • Внутри контроллера навигации перетащите контроллер табличного представления и используйте его для замены контроллера просмотра (Root View Controller))

    • изменить класс новой таблицы View Controller для класса, созданный выше (TableViewController для меня)

    • дважды нажмите на Table View в соответствии с новой таблице View Controller, чтобы открыть его (будет отображается на панели вкладок внутри контроллера с раздельным просмотром)

    • перетащить «Поисковая панель и поиск Дисплей» на табличном

    • сохранить XIB

    • запустить проект в симуляторе

      • в то время как в портретном режиме, нажмите на список корневых кнопка для вызова popover

      • уведомление кнопка «Редактировать» доступна для контакта

      • не

        нажмите в поле поиска - мы входим в режим поиска

      • нажмите кнопку Отмена для выхода из режима поиска

      • уведомление кнопку Edit больше не работает


Итак, может ли кто-нибудь помочь мне разобраться, почему это происходит?

Спасибо,

Марк

ответ

0

Ok, получил ответ от компании Apple для разработчиков технической поддержки. Они исследовали его и обнаружили, что это ошибка в UIPopoverController. Он дал мне обходной путь, который работает, но правая кнопка на панели навигации заканчивается, скользя по экрану после отмены поиска. Но, по крайней мере, это исправляет проблему. Он также предложил мне отправить отчет об ошибке Apple, и я тоже это сделал. Надеюсь, они исправит это в следующей версии SDK.

Вот копия соответствующей части ответа инженера Apple:

Я создал свой собственный проект и погружаю в том, что происходит, и это выглядит, как будто это ошибка в UIPopoverController, где после UISearchBar уволен, что-то мешает в навигационной панели.

Там обходной путь, который я нашел на данный момент, хотя анимация, которая происходит не удивительно оптимален: - Используйте - searchBarCancelButtonClicked: метод UISearchBarDelegate и добавить следующее:

self.navigationItem.rightBarButtonItem = ноль;
self.navigationItem.rightBarButtonItem = self.editButtonItem;

Как я уже сказал, похоже, что popover нажимает кнопку на панель навигации, так что, возможно, это не то, что вы ищете.

0

Я попробовал технику rightBarItem, упомянутую, но это не сработало для меня. Я должен был сделать это (который также является хак на самом деле)

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

Это может быть потому, что мой UINavigationBar не один унифицированный с пирогом, но я не могу сказать наверняка.