2012-05-10 4 views
1

У меня есть 2 текстовых поля. Если я нажимаю текстовые поля (в портретном режиме), клавиатура не скрывает textField. Но когда я перехожу к Пейзажу, тогда Клавиатура накладывает текстовые поля. Я не знаю, как установить размер кадра в методах делегата (textFieldShouldBeginEditing, textFieldShouldEndEditing), чтобы он работал как в портретной, так и в альбомной ориентации. ИЛИ я должен использовать вид прокрутки? enter image description hereПереместить UIView при нажатии TextField

enter image description here

ответ

1

Я не могу дать вам 100% определенного ответа, и потому, что это немного субъективно, а также потому, что я не в состоянии фактически видеть ваше приложение (экраны печати было бы неплохо). Но, по-моему, хороший ответ будет UIScrollView. Другой вариант - оживить ваш UITextField, поэтому он может идти «вверх», когда приходит клавиатура.

+0

для справки я добавил скриншоты. – Perseus

+2

Я не думаю, что для этого вам действительно нужен UIScrollView. При повороте я бы поставил кнопку и текстовое поле, где я хочу их. Думаю, было бы лучше и проще. – Peres

1

Вы должны установить рамку View Controller для отображения окна редактирования (например) в центре экрана в методе (void)textFieldDidBeginEditing:(UITextField *)textField. Расчеты должны зависеть от ориентации. И установите рамку в ее оригинал в (void)textFieldDidEndEditing:(UITextField *)textField.

Также существуют различные подходы, такие как использование scrollview и изменение его смещения содержимого при касании editbox.

3

Вы должны использовать 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]; 
} 
+0

В чем смысл прокрутки? Вы можете сделать то же самое, просто перемещая представление вверх по размеру клавиатуры. – Jaybit