10

で表示されるキーボードにキャンセルボタンを追加する方法はありますUITextFieldか? プロトコル リファレンスをUITextInputTraits調べたところ、さまざまなキーボード タイプを試すなど、何も見つかりませんでした。

4

3 に答える 3

15

キーボードの上に UIToolBar を表示できる入力アクセサリ ビューを作成し、これにキャンセル ボタンを追加できます。inputAccessoryView プロパティについては、以下のドキュメント リンクを参照してください。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html

これは、私が TextView に対して行った例です。入力アクセサリ ビューの作成メソッドは、「textViewDidBeginEditing」から呼び出されます。次に、入力アクセサリ ビューを作成し、私の場合は 3 つのボタンとスペース バーを追加します。

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

-(void)textViewDidBeginEditing:(UITextView *)textView {

[self createInputAccessoryView];
[textView setInputAccessoryView:_inputAccessoryView];
self.myTextView = textView;  }

-(void)createInputAccessoryView {

_inputAccessoryView = [[UIToolbar alloc] init];
_inputAccessoryView.barStyle = UIBarStyleBlackOpaque;
[_inputAccessoryView sizeToFit];

_inputAccessoryView.frame = CGRectMake(0,_collageView.frame.size.height - 44, _collageView.frame.size.width, 44);

UIBarButtonItem *fontItem = [[UIBarButtonItem alloc] initWithTitle:@"Font"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:self action:@selector(changeFont:)];
UIBarButtonItem *removeItem = [[UIBarButtonItem alloc] initWithTitle:@"Remove"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:self action:@selector(removeTextView:)];
//Use this to put space in between your toolbox buttons
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                          target:nil
                                                                          action:nil];
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                             style:UIBarButtonItemStyleDone
                                                            target:self action:@selector(dismissKeyBoard:)];

NSArray *items = [NSArray arrayWithObjects:fontItem,removeItem,flexItem,doneItem, nil];
[_inputAccessoryView setItems:items animated:YES];
[_myTextView addSubview:_inputAccessoryView];
}
于 2012-06-26T16:22:17.210 に答える
1

UIToolbarInterface Builder の View Controller に をドロップしたところ、次のようになりました。

@property IBOutlet UIToolbar *keyboardAccessory;

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // this is so I can edit it in Interface Builder, but it doesn't show in the view
    [keyboardAccessory removeFromSuperview];
}

-(BOOL) textFieldShouldBeginEditing:(UITextField*)textField {
    textField.inputAccessoryView = keyboardAccessory;
    return YES;
}

-(IBAction) pressedCancelButton {
    [self.view endEditing:YES];
}

出来上がり!

于 2013-07-26T20:35:16.540 に答える
0

アンドリュー、調子はどう?ディマRです!

私の知る限り、あなたがやろうとしていることをうまくやる方法はありません。ここにリストされている組み込みタイプのいずれかから簡単に選択できます

typedef enum {
   UIReturnKeyDefault,
   UIReturnKeyGo,
   UIReturnKeyGoogle,
   UIReturnKeyJoin,
   UIReturnKeyNext,
   UIReturnKeyRoute,
   UIReturnKeySearch,
   UIReturnKeySend,
   UIReturnKeyYahoo,
   UIReturnKeyDone,
   UIReturnKeyEmergencyCall,
} UIReturnKeyType;

あなたができることは、キャンセルボタンを含むキーボードの上にビューを追加するか、ビュー階層をトラバースしてボタンに必要なものをオーバーレイすることです (ただし、この方法は信頼できません)。残念ながら、これは Apple がまだ多くのカスタマイズを提供していないことの 1 つです。

編集:とにかく、メインの戻るボタンとしてキャンセルボタンを使用したくないので、実際には最初からあなたの質問を読み違えたと思います。この場合、入力アクセサリ ビューが最適です。

于 2012-06-26T16:23:37.917 に答える