Is there a way to add a cancel button to the keyboard displayed for UITextField
? Looking over the UITextInputTraits
Protocol Reference, I could not find anything, including trying out the different keyboard types.
You can create a input accessory view which can display a UIToolBar Above the keyboard and then add a cancel button to this. Take a look at the documentation link below for the inputAccessoryView property.
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html
This is an example of one I did for a TextView. The create Input Accessory View method is called from "textViewDidBeginEditing". Then it creates the input accessory view and in my case adds three buttons and a space bar.
I hope that helps.
-(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];
}
I just dropped a UIToolbar
into my view controller in Interface Builder, then:
@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];
}
Voila!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With