私は他の誰かのコードをデバッグしています - 申し訳ありませんが、Objective-C の経験は非常に限られています。
#pragma mark - Keyboard events
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
NSLog(@"Keyboard a Notification user Info %@", info);
printf("keyboardWasShown \\\\\\\\\\\\\\\\\\\\\n");
NSLog(@"textInputView: y: (%.f), height: (%.f), kbHeight: (%.f)",
textInputView.frame.origin.y, textInputView.frame.size.height, kbSize.height);
[UIView animateWithDuration:2.0f animations:^{
if (keyboardNewLine){
bubbleTableFrame = originalBubbleTableFrame;
}
CGRect frame = originalTextViewFrame;
int difference = 0;
if (IsIphone5){
difference = -42;
frame.origin.y -= kbSize.height + difference;
} else {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) {
difference = 42;
frame.origin.y -= kbSize.height + difference;
} else {
frame.origin.y -= kbSize.height + 110;
difference = 42;
}
}
textInputView.frame = frame;
frame = bubbleTableFrame;
frame.size.height -= kbSize.height + difference;
bubbleTable.frame = frame;
}];
NSLog(@"textInputView: y: (%.f), height: (%.f), kbHeight: (%.f)",
textInputView.frame.origin.y, textInputView.frame.size.height, kbSize.height);
printf("keyboardWasShown //////////\n");
[bubbleTable scrollBubbleViewToBottomAnimated:YES];
}
テキスト入力フィールドをタップしてキーボードを表示すると、フィールドがキーボードのすぐ上に移動することがあります。それはすべて、どのキーボードが最初に読み込まれるかによって異なります。
- キーボードなしのテキスト フィールド:
- テキスト フィールドをタップした後、次のことを期待します。
- ただし、テキスト フィールドは画面の下部にとどまり、プレースホルダーのみが残ります。
- 奇妙なことに、QuickType の行を下にドラッグすると、テキスト フィールドが突然表示されます。
- しかし、このビューを終了して後で戻ってくると、テキスト フィールドが一番下に表示されたままになります (QuickType の行を上にドラッグすると、テキスト フィールドが飛び出します)。
- 地球アイコンをタップして別のキーボード (入力方法) に切り替えると、常にテキスト フィールドが表示されます。
- サードパーティのキーボードは影響を受けていないようです:
textInputView.frame.origin.yを監視し続けて、何が問題なのかを確認していることがわかります。472 (キーボードなし) から 261 (英語キーボード) に変わりますが、テキスト フィールドは単純に上がりません。
バブルの横にある白い領域をタップすると、キーボードが下に移動し、下部にスタックしているテキスト フィールドが表示されるため、プレースホルダー (存在する場合) の背後にあるとは思いません。
誰かがsetNeedsDisplay、setNeedsLayoutなどを追加することを提案しましたが、役に立ちませんでした。
前もって感謝します。