添加取消button到UITextField键盘

有没有办法添加一个取消button显示为UITextField的键盘? 查看UITextInputTraits协议参考,我找不到任何东西,包括尝试不同的键盘types。

您可以创build一个input附件视图,它可以在键盘上方显示UIToolBar,然后为此添加一个取消button。 请看下面的文档链接inputAccessoryView属性。

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

这是我为TextView做的一个例子。 创buildinput附件视图方法从“textViewDidBeginEditing”中调用。 然后创buildinput附件视图,在我的情况下添加三个button和一个空格键。

我希望有帮助。

 -(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]; } 

我刚刚把一个UIToolbar放到了Interface Builder的视图控制器中,然后:

 @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]; } 

瞧!

安德鲁,怎么样? 这是迪玛R!

据我所知,没有很好的方法来做你想做的事情。 您可以轻松地从这里列出的内置types中select一个

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

你可以做的是在包含你的取消button的键盘上添加一个视图,或者尝试遍历视图层次结构,并覆盖button上的button(尽pipe这个方法是不可靠的)。 不幸的是,这是苹果还没有提供太多定制的一件事。

编辑:其实我觉得我从一开始就误解了你的问题,因为你不想要一个取消button作为主返回button。 在这种情况下,input附件视图肯定是要走的路。