Hi,
Sometimes we need to show our custom accessory view when UITextField/UITextView is in editing mode or being edited. We can use inputAccessoryView property to assign a view just above the system keyboard.
Input accessory view is very helpful when you are dealing with UITextView. Because when you press return key it actually starts a new line and user can’t end editing from the UITextView. But with the help of inputAccessory view you can overcome such problems with ease.
Here I’m going to tell you how you can add a toolbar as custom accessory view for UITextField or UITextView in swift.
1- Create an instance of toolbar with with it’s frame.
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 44))
2- Now we are going to add a UIBarButtonItem to above created toolbar.
let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonTapped(button:)))
You can see that the selector is doneButtonTapped for ‘doneButton’, so make sure that it’s presented in the class somewhere.
func doneButtonTapped(button:UIBarButtonItem) -> Void {
// do you stuff here..
}
3- Add above created button as items to toolbar(created in #1).
toolBar.items = [doneButton]
this is how we are adding items to tool bar. You can also use an alternate method to have animation in your code.
toolBar.setItems([doneButton], animated: true)
4- Use UITextField’s property ‘inputAccessoryView’ to assign/add inputAccessoryView.
textField.inputAccessoryView = toolBar
5- Now run your app and start editing the fields, you’ll see that a input accessory view is present with system keyboard.
Code Snippet:
func addAccessoryView() -> Void {
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 44))
let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonTapped(button:)))
toolBar.items = [doneButton]
toolBar.tintColor = UIColor.red
textField.inputAccessoryView = toolBar
}
func doneButtonTapped(button:UIBarButtonItem) -> Void {
// do you stuff with done here
}
Thank you
0 Comment(s)