Долгое время lurker - первый раз постер!
У меня возникла проблема при воссоздании панели с помощью UITextView
, например WhatsApp.
Я использую собственный подкласс UIView
и лениво создаю его:
- (UIView *)inputAccessoryView
и возвращает YES:
- (BOOL)canBecomeFirstResponder
Теперь я хочу изменить размер inputAccessoryView
, когда размер UITextView
растет. На iOS 7 я просто изменил бы размер фрейма указанного представления, а не его начало, а затем позвонил reloadInputViews
, и он будет работать: вид будет перемещен вверх, чтобы он был полностью виден над клавиатурой.
Однако на iOS 8 это не работает. Единственный способ заставить его работать - это также изменить начало кадра на отрицательное значение. Это было бы хорошо, за исключением того, что он создавал некоторые странные ошибки: например, UIView
возвращается к исходному кадру при вводе любого текста.
Есть ли что-то, что мне не хватает? Я довольно уверен, что WhatsApp использует inputAccessoryView
из-за того, как они отклоняют клавиатуру при перетаскивании - только в последней версии приложения.
Пожалуйста, дайте мне знать, если вы можете мне помочь! Или если есть какой-либо тест, который вы хотели бы мне запустить!
Спасибо!:)
Кстати, вот код, который я использую, чтобы обновить высоту пользовательского UIView, называемого composeBar
:
// ComposeBar frame size
CGRect frame = self.composeBar.frame;
frame.size.height += heightDifference;
frame.origin.y -= heightDifference;
self.composeBar.frame = frame;
[self.composeBar.textView reloadInputViews]; // Tried with this
[self reloadInputViews]; // and this
Изменить: доступен полный исходный код @https://github.com/manuelmenzella/SocketChat-iOS