キーボードが表示されたときにUITextViewのサイズを変更しようとしています。iPhoneでは美しく動作します。システムがキーボード通知をディスパッチすると、テキストビューのサイズが変更されます。編集が終わったら、最初のスペースを埋めるようにサイズを変更します。(はい、編集が停止するとキーボードがなくなったと思います。変更する必要があります。ただし、それは私の問題ではないと思います。)
iPadでテキストビューのサイズを変更すると、フレームのサイズが正しく変更されますが、アプリはフレームのY値をゼロにリセットしているようです。これが私のコードです:
- (void) keyboardDidShowWithNotification:(NSNotification *)aNotification{
//
// If the content view being edited
// then show shrink it to fit above the keyboard.
//
if ([self.contentTextView isFirstResponder]) {
//
// Grab the keyboard size "meta data"
//
NSDictionary *info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
//
// Calculate the amount of the view that the keyboard hides.
//
// Here we do some confusing math voodoo.
//
// Get the bottom of the screen, subtract that
// from the keyboard height, then take the
// difference and set that as the bottom inset
// of the content text view.
//
float screenHeightMinusBottom = self.contentTextView.frame.size.height + self.contentTextView.frame.origin.y;
float heightOfBottom = self.view.frame.size.height - screenHeightMinusBottom;
float insetAmount = kbSize.height - heightOfBottom;
//
// Don't stretch the text to reach the keyboard if it's shorter.
//
if (insetAmount < 0) {
return;
}
self.keyboardOverlapPortrait = insetAmount;
float initialOriginX = self.contentTextView.frame.origin.x;
float initialOriginY = self.contentTextView.frame.origin.y;
[self.contentTextView setFrame:CGRectMake(initialOriginX, initialOriginY, self.contentTextView.frame.size.width, self.contentTextView.frame.size.height-insetAmount)];
}
なぜこれはiPhoneで機能し、iPadでは機能しないのでしょうか。また、自動サイズ変更マスクが予期しない変更を加える可能性はありますか?