How can I add a toolbar above the keyboard?
UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 50)];numberToolbar.barStyle = UIBarStyleBlackTranslucent;numberToolbar.items = [NSArray arrayWithObjects: [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)], [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)], nil];[numberToolbar sizeToFit];phonenumberTextField.inputAccessoryView = numberToolbar;
To Dismiss Keyboard:
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
Swift 3:
let numberToolbar = UIToolbar(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 50))numberToolbar.barStyle = UIBarStyle.DefaultnumberToolbar.items = [ UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelNumberPad"), UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil), UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneWithNumberPad")] numberToolbar.sizeToFit() phonenumberTextField.inputAccessoryView = numberToolbar
Swift 4.2:
let numberToolbar = UIToolbar(frame:CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))numberToolbar.barStyle = .defaultnumberToolbar.items = [UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelNumberPad)),UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(doneWithNumberPad))]numberToolbar.sizeToFit()phonenumberTextField.inputAccessoryView = numberToolbar...@objc func cancelNumberPad() { //Cancel with number pad}@objc func doneWithNumberPad() { //Done with number pad}
You do not need to do this in code anymore.
- Just simply drag UIView to the top bar of current scene and customize it as you want.
In code simply put
IBOutlet
for both:toolbarView
andtextView
and make connections.@IBOutlet private var toolbarView: UIView!@IBOutlet private var textView: UITextView!
In
viewDidLoad
setup your toolbarView as accessoryView of yourUItextView
.override func viewDidLoad() { super.viewDidLoad() textView.inputAccessoryView = toolbarView}
The result is following:
For swift (1.2):
let numberToolbar = UIToolbar(frame: CGRectMake(0, 0, self.view.frame.size.width, 50))numberToolbar.barStyle = UIBarStyle.DefaultnumberToolbar.items = [ UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "keyboardCancelButtonTapped:"), UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil), UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "keyboardDoneButtonTapped:")]numberToolbar.sizeToFit()yourTextView.inputAccessoryView = numberToolbar