iOS で検索バー キーボードをカスタマイズするにはどうすればよいですか? たとえば、キーボードの上にパーソナライズされたボタン(数学記号->、∞、∑が必要)を備えたツールバーを追加します。ご提案ありがとうございます。マット
1 に答える
Uは「戻る」キーしか変えられないと思います。私が知る限り、アップルはこれ以上の変更を許可していません...だから、ここにあなたのための私のチュートリアルがあります:
実際、他のすべてのキーボード タイプ (非常によく似た を除く) は、対応する実装UIKeyboardTypePhonePad
者の returnKeyType プロパティを設定することによって却下される可能性を提供します。UITextInputTraits
では、テンキーで同じ効果を得るにはどうすればよいでしょうか。回避策が見つかりました!
テンキーを見ると、左下に未使用のスペースがあることがわかります。ここに、カスタムの「return」キーを接続します。ここで見ることができます:
簡単に言うと、スクリーンショットを撮り、バックスペース キー全体を切り取り、水平方向に反転させ、Photoshop でバックスペース記号を消去し、「リターン」キーに必要なテキストを重ねます。「DONE」というラベルを付けることにしました。これで、カスタム ボタンのイメージができましたUIControlStateNormal
。手順全体を繰り返して (スクリーンショットを撮るときにバックスペース キーを押して)、ボタンの 2 番目の画像を取得しますUIControlStateHighlighted
。結果は次のとおりです。
コーディングに戻ります。最初に、テンキーが画面上でスライドするタイミングを知る必要があります。これにより、それが起こる前にカスタム ボタンをプラグインできます。幸いなことに、まさにその目的のための通知があり、登録は次のように簡単です。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
すべての作業が完了したら、通知センターの適切な場所からオブザーバーを削除することを忘れないでください。
[[NSNotificationCenter defaultCenter] removeObserver:self];
今、私たちはその核心に迫っています。このメソッドで行う必要があるのkeyboardWillShow
は、キーボード ビューを見つけてボタンを追加することだけです。UIWindow
他の人がすでに理解しているように、キーボードビューは私たちのアプリケーションの一部です(このスレッドを参照してください)。そのため、そのウィンドウへの参照を取得し (ほとんどの場合、2 番目のウィンドウになるためobjectAtIndex:1
、以下のコードでは問題ありません)、キーボードが見つかるまでそのビュー階層をトラバースし、左下にボタンを追加します。
- (void)keyboardWillShow:(NSNotification *)note {
// create custom button
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
doneButton.frame = CGRectMake(0, 163, 106, 53);
doneButton.adjustsImageWhenHighlighted = NO;
[doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
[doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];
// locate keyboard view
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
// keyboard view found; add the custom button to it
if([[keyboard description] hasPrefix:@"UIKeyboard"] == YES)
[keyboard addSubview:doneButton];
}
}
ほら、それだけです!ボタンの空きスペースは座標(0, 163)から始まり、寸法は(106, 53)です。もちろん、doneButton メソッドはここで作成する必要がありますが、それはもう難しいことではありません。resignFirstResponder
編集中のテキスト フィールドを呼び出して、キーボードを下にスライドさせるようにしてください。
そして、ここで U は最終的なプロジェクトを見つけることができます...これは大変な作業でした...お役に立てば幸いです..
ここにプロジェクトへのリンク: