В моем приложении у меня есть UITextView, который находится в нижней части экрана. Так что я делаю это следующий код, но проблема в том, что если текст, который я нажимаю на UITextView, находится ниже клавиатуры, он будет правильно прокручиваться над клавиатурой.Клавиатура иногда блокирует UITextView
Вот как я зарегистрировать NSNotifications: (В ViewDidLoad)
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasHidden:)
name:UIKeyboardWillHideNotification object:nil];
Методы:
-(void)keyboardWasShown:(NSNotification*)aNotification {
NSDictionary *info = [aNotification userInfo];
// Get the size of the keyboard.
NSValue *aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
keyboardSize = [aValue CGRectValue].size;
// Resize the scroll view (which is the root view of the window)
CGRect viewFrame = [textView frame];
viewFrame.size.height -= keyboardSize.height;
textView.frame = viewFrame;
// Scroll the active text field into view.
//CGRect textFieldRect = [activeField frame];
[textView scrollRectToVisible:viewFrame animated:YES];
}
-(void)keyboardWasHidden:(NSNotification*)aNotification {
// Reset the height of the scroll view to its original value
CGRect viewFrame = [textView frame];
viewFrame.size.height += keyboardSize.height;
textView.frame = viewFrame;
}
Как Разрегистрируйте NSNotifications: В ViewDidUnload:
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
Кто-нибудь видит что-то не так?
Спасибо!
Если только свиток не существует, проверьте расчёт и движение кадра. Это может пойти не так. – cocoakomali
Что я должен делать NSLog, я отправлю его, потому что все эти значения очень сбивают с толку. Может быть, кто-то еще увидит мои проблемы, когда я опубликую эти значения. –
Вы должны напечатать оригинальную рамку представления, размер клавиатуры и, наконец, измененную рамку просмотра. – cocoakomali