Мое приложение имеет вид, похожий на приложение "Сообщения iOS", с представлением в стиле панели инструментов, содержащим текстовое поле, прикрепленное к нижней части экрана:
Когда пользователь вводит текстовое поле для ввода текста, клавиатура соскальзывает и панель инструментов слайд:
Я реализовал это, создав панель инструментов inputAccessoryView
на UITableViewController
и сделав ее основным view
первым ответчиком. Текст основного текста "Вот ссылка..." реализуется как UIWebView
, поскольку он заполняется HTML из веб-службы и нуждается в поддержке форматирования и ссылок.
Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь нажимает на UIWebView
, он становится первым ответчиком, а inputAccessoryView
скрывается сам:
Которое я не хочу. Мне нужно, чтобы пользователь мог использовать ссылки в веб-представлении, поэтому не реагировать на взаимодействие с пользователем не является вариантом.
Должен ли UIWebView
стать первым ответчиком для обработки кранов? Если это так, можете ли веб-просмотр обращаться с краном по ссылке, а затем передать событие касания до основного view
и снова сделать этого первого ответчика? Любые указатели на то, как исправить это, будут с благодарностью приняты.
UPDATE:
Итак, кажется, что веб-представление не должно быть первым ответчиком для обработки ссылок на ссылки, так как я могу взломать проблему:
extension UIView {
public override func becomeFirstResponder() -> Bool {
// Actual view is instance of private class UIWebBrowserView, its parent parent view is UIWebView
if self.superview?.superview is UIWebView {
return false
} else {
return super.becomeFirstResponder()
}
}
}
Может ли кто-нибудь сказать мне, как достичь вышеуказанного в не-хакерской манере?