11

「setInputView」関数を使用してカスタムキーボードでテキストフィールドを実装しました。しかし、問題があります。私のキーボード フレームは、標準の iPhone キーボード フレームではありません。

質問: カスタム キーボードのサイズを変更するにはどうすればよいですか? UIKeyboardFrameBeginUserInfoKey などの関数をいくつか知っています。

注意: iPhone キーボード フレーム = 0,264,320,216 私のカスタム キーボード フレーム = 0,0,320,460

どうぞよろしくお願いいたします... P

4

5 に答える 5

26

のプロパティに割り当てるカスタム入力ビューのデフォルトの動作はUITextField、デフォルトのキーボードと同じフレームにビューのサイズを変更することです。設定してみてください (入力ビューの名前を使用してInputViewControllerいますが、好きなものを使用できます):

inputViewController = [[InputViewController alloc] initWithNibName:@"InputViewController" bundle:nil];
inputViewController.delegate = self;
inputViewController.view.autoresizingMask = UIViewAutoresizingNone; // This is the code that will make sure the view does not get resized to the keyboards frame.

詳細については、 Appleが提供する次のリンクを参照してください

UIKit は、自動サイズ変更マスクに UIViewAutoresizingFlexibleHeight 値を持つ入力ビューに遭遇すると、高さをキーボードに合わせて変更します。

それが役立つことを願っています!

于 2011-10-26T19:08:21.447 に答える
10

ネイティブ キーボードと同じサイズのキーボード inputView を設定するには、次のようにします。

inputView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

独自のフレームを設定するには、次のようにします。

inputView.autoresizingMask = UIViewAutoresizingNone;

アップルから

入力ビューまたは入力アクセサリ ビューのサイズと内容を柔軟に定義できます。これらのビューの高さは自由に設定できますが、システム キーボードと同じ幅にする必要があります。UIKit は、自動サイズ変更マスクに UIViewAutoresizingFlexibleHeight 値を持つ入力ビューに遭遇すると、高さをキーボードに合わせて変更します。入力ビューと入力アクセサリ ビューが持つことができるサブビュー (コントロールなど) の数に制限はありません。入力ビューと入力アクセサリ ビューの詳細については、iOS ヒューマン インターフェイス ガイドラインを参照してください。

于 2015-03-27T09:10:02.157 に答える
1

私も同じ問題を抱えていました。UIKeyboardDidShowNotification に登録し(残念ながら UIKeyboardWillShowNotification は機能しませんでした)、キーボードが表示された後にビューサイズを変更することで解決しました。ただし、上に移動すると、キーボードの上にまだ白いボックスがありました。これは、白い背景を持つ UITextView を経由しているため、私にとってはうまくいきました。ただし、他の色付きのオブジェクトの上に来る場合は、ビューが適切にサイズ変更される前に少し見苦しくなります。背景色を clearColor に設定することで解決できます。

// Add this while initializing your view
self.backgroundColor = [UIColor clearColor]; // Needed because we can't resize BEFORE showing the view.  Otherwise you will see an ugly white box moving up w/ the keyboard
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWasShown:)
                                             name:UIKeyboardDidShowNotification object:nil];



// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
{

    CGRect rect = self.frame;
    rect.size.height = 164;
    self.frame = rect;

}
于 2011-06-04T14:47:39.353 に答える
1

また、UIViewController を使用して inputView を設計している場合は、UIViewController.view を使用しないでください... AutoresizeMask に関係なく、回転時にサイズが正しく変更されないという多くの問題があるようです。

私にとってうまくいったのは、既存の UI を使用して Editor > Embed In > View を使用することでした。次に、新しいアウトレットを作成し、そのアウトレットを inputView として渡します。突然、回転バグのサイズ変更が消えました。

于 2015-10-10T21:11:16.520 に答える
0

私にとって、msgambelのソリューションは機能しませんでした。しかし、正しいアプローチで、私は inputView のautoresizingMaskで遊んでいました。以前は別の設定がありましたが、カスタム キーボード上の余分な空白を避ける正しい方法は次のとおりです。

ここに画像の説明を入力

これを最も外側のビューに適用しました。

ここに画像の説明を入力

于 2012-11-25T02:19:37.017 に答える