iOS 7: показ всплывающего окна из панели поиска

У меня есть UISearchBar в приложении для iPad. Когда панель поиска начинает редактироваться, я показываю всплывающее окно под панелью поиска, содержащее поисковые предложения и предыдущие поиски:

введите здесь описание изображения

Это давнее взаимодействие в приложении. Теперь в iOS 7 все, что находится за всплывающим окном (с точки зрения оси Z), выглядит затемненным — предположительно, UIView, добавляемое всплывающим окном поверх окна, больше не прозрачно. Это означает, что панель поиска, которую в данный момент редактирует пользователь, больше не активна. Он активен (пользователь по-прежнему может выбрать текст в строке поиска и нажать кнопку «Удалить», чтобы очистить текст в строке поиска), но меня немного беспокоит то, что он выглядит неактивным.

Какие у меня есть варианты, как справиться с этим изменением в работе всплывающих окон в iOS 7?

Вот что я придумал до сих пор:

  • попытаться восстановить поведение iOS 6, очистив фон всплывающего окна (в UIPopoverController нет ничего, что позволяло бы это сделать, поэтому я полагаю, что это потребует копания и поиска окна всплывающего окна)
  • прекратите использовать UIPopoverController и попробуйте имитировать его с помощью моего собственного контроллера представления, который затемняет все, кроме панели поиска.

Я упускаю что-то очевидное? Оба варианта (и другие глупые/безумные варианты, о которых я думал) кажутся нетривиальными для реализации и/или плохими идеями по нескольким причинам.

Пример проекта Apple для демонстрации такой функциональности, Поиск панели инструментов ведет себя так же, как и мое приложение. Эта затемненная панель поиска не может быть лучшим опытом для пользователей. В качестве примера рассмотрим Календарь для iPad: вместо панели поиска на панели навигации, под которой отображается всплывающее окно, когда оно активно (как и в моем приложении), теперь отображается значок поиска, который показывает всплывающее окно, содержащее панель поиска. Я предполагаю, что изменение было сделано из-за проблемы, с которой я столкнулся здесь.


person scottjacksonx    schedule 25.09.2013    source источник


Ответы (1)


На мой взгляд, самым простым и удобным для пользователя было бы переместить панель поиска в UIPopover. Чтобы удалить затемнение, вам придется написать свой собственный UIPopoverBackgroundView. Если вы хотите узнать, как это сделать, посмотрите здесь.

person Stephen Melvin    schedule 25.09.2013
comment
Я не думал, что UIPopoverBackgroundView такие замены, как DDPopoverBackgroundView, предназначены для этого — разве они не предназначены для настройки фона всплывающего окна (т. Верх? В любом случае, да, похоже, что лучше всего будет последовать примеру Apple и переместить панель поиска во всплывающее окно. - person scottjacksonx; 25.09.2013
comment
Вроде все влияет. Я вставил DDPopoverBackgroundView в образец кода Apple ToolbarSearch и заметил, что затемнение исчезло. Вот скриншот: imgur.com/H2h1pPF - person Stephen Melvin; 25.09.2013