У меня есть 2 текстовых поля. Если я нажимаю текстовые поля (в портретном режиме), клавиатура не скрывает textField. Но когда я перехожу к Пейзажу, тогда Клавиатура накладывает текстовые поля. Я не знаю, как установить размер кадра в методах делегата (textFieldShouldBeginEditing, textFieldShouldEndEditing), чтобы он работал как в портретной, так и в альбомной ориентации. ИЛИ я должен использовать вид прокрутки? Переместить UIView при нажатии TextField
ответ
Я не могу дать вам 100% определенного ответа, и потому, что это немного субъективно, а также потому, что я не в состоянии фактически видеть ваше приложение (экраны печати было бы неплохо). Но, по-моему, хороший ответ будет UIScrollView
. Другой вариант - оживить ваш UITextField
, поэтому он может идти «вверх», когда приходит клавиатура.
Вы должны установить рамку View Controller для отображения окна редактирования (например) в центре экрана в методе (void)textFieldDidBeginEditing:(UITextField *)textField
. Расчеты должны зависеть от ориентации. И установите рамку в ее оригинал в (void)textFieldDidEndEditing:(UITextField *)textField
.
Также существуют различные подходы, такие как использование scrollview и изменение его смещения содержимого при касании editbox.
Вы должны использовать scrollView
и сделать другие элементы пользовательского интерфейса в качестве подзадачи ScrollView
. И размер рамки для scrollView
должен использовать весь размер окна даже в Landscape Mode
тоже (для этого вам нужно узнать autoresizingmask
). А затем, когда вы вызываете textField
и keyboard appears
, вам необходимо уменьшить размер нашего кадра scrollView
, чтобы прокручивать даже клавиатуру на взгляде ..
ниже мой код для textFieldDidBeginEditing и textFieldDidEndEditing метода:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[UIView beginAnimations: nil context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.2];
scrollView.frame = CGRectMake(0,0,320,150);
[scrollView scrollRectToVisible:textField.frame animated:YES];
[UIView commitAnimations];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self autoCalculateDownPayment];
[UIView beginAnimations: nil context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.2];
scrollView.frame = CGRectMake(0,0,320,416);
[UIView commitAnimations];
}
В чем смысл прокрутки? Вы можете сделать то же самое, просто перемещая представление вверх по размеру клавиатуры. – Jaybit
для справки я добавил скриншоты. – Perseus
Я не думаю, что для этого вам действительно нужен UIScrollView. При повороте я бы поставил кнопку и текстовое поле, где я хочу их. Думаю, было бы лучше и проще. – Peres