У меня есть UIScrollView, внутри которого у меня есть UITextField и UITextView.
Я хочу, чтобы клавиатура скрывала поле, над которым мы работаем.
Если мой пользователь нажмет на TextField, я хочу, чтобы он прокрутился до верхней части экрана.
Если мой пользователь нажмет на TextView, я хочу, чтобы он изменил размер в пустое место слева на верхней части клавиатуры.
Моя клавиатура имеет вспомогательный вид (панель инструментов).
Пока я ловлю уведомление UIKeyboardWillShowNotification и использую этот код, который на самом деле не работает (текстовое представление изменено, но все еще за клавиатурой):
Этот код хорошо работал, когда у меня не было UIScrollView.
- (void)keyboardWillShow:(NSNotification *)notification {
if ([self.noteView isFirstResponder] == NO) return;
/*
Reduce the size of the text view so that it's not obscured by the keyboard.
Animate the resize so that it's in sync with the appearance of the keyboard.
*/
NSDictionary *userInfo = [notification userInfo];
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; // Get the origin of the keyboard when it's displayed.
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; // Get the duration of the animation.
// Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.
CGRect keyboardRect = [aValue CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
CGFloat keyboardTop = keyboardRect.origin.y;
CGRect newTextViewFrame = self.view.bounds;
newTextViewFrame.size.height = keyboardTop - self.view.frame.origin.y; // Using bounds here does not help
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
// Animate the resize of the text view's frame in sync with the keyboard's appearance.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
self.noteView.frame = newTextViewFrame;
[UIView commitAnimations];
}
Не могли бы вы помочь мне:
сделать эту работу для просмотра текста?
заставить Textview вернуться в исходное положение?
Как мне сделать прокрутку TextField без какой-либо функции изменения размера?
Спасибо