TextFieldがキーボードに隠されないようにする
TextFieldを全画面のUIScrollViewのscroll上に配置しておく。TextFieldDelegateに次のように書くとテキストフィールドが隠れない。
- (void)textFieldDidBeginEditing:(UITextField *)tf { NSInteger marginFromKeyboard = 10,keyboardHeight = 165;//interfaceOrientationによる CGRect tmpRect = tf.frame; if((tmpRect.origin.y + tmpRect.size.height + marginFromKeyboard + keyboardHeight) > scroll.frame.size.height){ NSInteger yOffset; yOffset = keyboardHeight + marginFromKeyboard + tmpRect.origin.y + tmpRect.size.height - scroll.frame.size.height; [scroll setContentOffset:CGPointMake(0,yOffset) animated:YES]; } } - (void)textFieldDidEndEditing:(UITextField *)tf { [scroll setContentOffset:CGPointMake(0,0) animated:YES]; }
UIによってはx方向のOffsetも変更したり、元のscrollViewのオフセットを記憶しておいてその値に戻す方がいいかもしれない。