У меня есть UIView, который рисует подпись. Подпись вводится через настраиваемый inputView в представлении подписи.
При рисовании представления подписи я использую тот факт, что это первый респондент, который выделяет представление как редактируемое, и я также переопределяю метод resignFirstResponder, чтобы определить, когда прекратить отображение его как редактируемого.
Итак, код выглядит примерно так:
@implementation SignatureView
-(BOOL) becomeFirstResponder {
BOOL result = [super becomeFirstResponder];
[self showEditingMode];
return result;
}
-(BOOL) resignFirstResponder {
BOOL result = [super resignFirstResponder];
[self showViewingMode];
return result;
}
-(UIView *) inputView {
if (!keyboard)
keyboard = [[SignatureKeyboardView alloc] initWithStuff:stuff....];
return keyboard;
}
@end
У меня проблема в том, что в iOS 11 метод resignFirstResponder больше не вызывается. В предыдущих версиях iOS он вызывался, и я мог затем изменить пользовательский интерфейс, чтобы показать, что он больше не редактируется.
Это ПРОИСХОДИТ ТОЛЬКО, когда UIScrollView настроен на отключение клавиатуры при перетаскивании, а пользователь перетаскивает UIScrollView.
Если вместо этого пользователь нажимает другой UIView, который может стать первым респондентом, например UITextField, затем вызывается resignFirstResponder.
Мне не хватает чего-то, что изменилось в iOS11, или я обнаружил ошибку?
Привет, @salabaha - нет, я так и не смог это решить. В итоге я решил обойти это, слушая UIKeyboardWillShowNotification и UIKeyboardWillHideNotification, а затем делая то, что мне нужно. Не идеально, но работает.
Спасибо за ответ. Я сделал то же самое обходное решение, подписавшись на уведомления клавиатуры, и это сработало.





@molf, где вы можете решить эту проблему