Я работаю над приложением для iPhone с автомакетом, в котором есть верхнее и нижнее поле внизу представления. Пользователь нажимает на поле, и мне приходится прокручивать вид над клавиатурой. Вот мой код клавиатурыDidShow.
- (void) keyboardDidShow:(NSNotification *)notification
{
CGSize kbSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
[[self scrollView] setContentInset:contentInsets];
[self setIsKeyboardVisible:YES];
}
Мало того, что это не должно работать (я пропустил фактическую команду прокрутки), но когда я нажимаю на верхнее поле, представление прокручивается вверх до тех пор, пока нижняя часть этого поля не окажется в верхней части клавиатуры. Когда я нажимаю «Далее» на клавиатуре, чтобы переместить курсор в нижнее поле, представление прокручивается еще немного вверх, пока нижняя часть нижнего поля не окажется в верхней части клавиатуры.
Вот как я обрабатываю клавишу возврата:
- (BOOL) textFieldShouldReturn:(UITextField*)textField
{
switch ([textField tag])
{
case vtNameField:
[[self txtEmail] becomeFirstResponder];
break;
case vtEmailField:
[[self txtEmail] resignFirstResponder];
break;
default:
break;
}
return NO;
}
Кто-нибудь знает, что вызывает прокрутку? Я вижу такое поведение в других приложениях и подумал, что это должно быть закодировано вручную. Я вижу это только в одном своем представлении, и мне интересно, связано ли это с чем-то, что я настроил.