キーボードが表示されてキーボードがテキストフィールドをブロックしないようにするには、次の方法を使用してビューを上に移動しています。基本的には、スクロールビューにテキストフィールドを埋め込み、キーボードが表示されたら上にスクロールします。テキストフィールドは、ビューの上部にすでにあり、それがジャンプアップするために必要がない場合IOS:キーボードが表示されているときにTextFieldを上に移動
// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
_scrollView.contentInset = contentInsets;
_scrollView.scrollIndicatorInsets = contentInsets;
// If active text field is hidden by keyboard, scroll it so it's visible
// Your app might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, _activeField.frame.origin)) {
[_scrollView scrollRectToVisible:_activeField.frame animated:YES];
}
}
しかし、上記のコードは、それが視野の外にジャンプアップさせます。
私はそれを防ぐために追加できる行があることを思い出していますが、私はそれを覚えていません。基本的には、テキストフィールドが既に十分に高くキーボードがそれをカバーしないので、ビューを移動する必要がないかどうかをテストします。
上記のコードのif文は、テキストフィールドが非表示になっていない場合を除外しているようには見えません。
誰でもこれを行う方法を提案できますか?
ありがとうございます。
、それがためにはるかに簡単になります以下の通りです通常のビューでは、ちょうどto bottom制約を調整してからlayoutIfNeededを呼び出すと、サブビューはビューから飛び出さないでしょう。 – Tj3n
このことを自伝するIQkeyboardライブラリを使用することができます。あなたのプロジェクトにライブラリを置くだけで、何も実装する必要はありません。自動的に作業を開始します –