有没有办法在UITextField
显示的键盘上添加取消按钮?查看UITextInputTraits
协议参考,我找不到任何东西,包括尝试不同的键盘类型。
答案 0 :(得分:15)
您可以创建一个输入附件视图,该视图可以在键盘上方显示UIToolBar,然后为此添加取消按钮。请查看下面的文档链接,了解inputAccessoryView属性。
这是我为TextView所做的一个例子。创建输入附件视图方法从" textViewDidBeginEditing"调用。然后它创建输入附件视图,在我的例子中添加三个按钮和一个空格键。
我希望有所帮助。
-(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];
}
答案 1 :(得分:1)
我刚刚在Interface Builder中将UIToolbar
放入我的视图控制器,然后:
@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];
}
瞧!
答案 2 :(得分:0)
据我所知,没有什么好方法可以做你想做的事情。您可以轻松选择列出here
列出的其中一种内置类型typedef enum {
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
} UIReturnKeyType;
您可以做的是在包含取消按钮的键盘顶部添加视图,或者尝试遍历视图层次结构并在该方式上覆盖您想要的按钮(尽管此方法不可靠)。不幸的是,这是Apple尚未提供太多定制的一件事。
编辑:实际上我认为我从一开始就误读了你的问题,因为你不希望取消按钮作为主要的返回按钮。在这种情况下,输入附件视图绝对是最佳选择。