ios - samsung - teclado con numeros arriba iphone
Espero que esto ayude :)
UIToolbar* keyboardToolbar = [[UIToolbar alloc] init];
[keyboardToolbar sizeToFit];
UIBarButtonItem *flexBarButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil action:nil];
UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self action:@selector(yourTextViewDoneButtonPressed)];
keyboardToolbar.items = @[flexBarButton, doneBarButton];
self.yourTextView.inputAccessoryView = keyboardToolbar;
y luego agregue el método YourTextViewDoneButtonPressed
-(void)yourTextViewDoneButtonPressed
{
[self.yourTextView resignFirstResponder];
}
Esta solución para Swift3 / 4
Agregue esta línea a su proyecto como una extensión Su problema está resuelto.
extension UITextField{
@IBInspectable var doneAccessory: Bool{
get{
return self.doneAccessory
}
set (hasDone) {
if hasDone{
addDoneButtonOnKeyboard()
}
}
}
func addDoneButtonOnKeyboard()
{
let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
doneToolbar.barStyle = .default
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonAction))
let items = [flexSpace, done]
doneToolbar.items = items
doneToolbar.sizeToFit()
self.inputAccessoryView = doneToolbar
}
@objc func doneButtonAction() {
self.resignFirstResponder()
}
}
Antes de la extensión
Después de la extensión
Esta solución para Swift 4
override func viewDidLoad() {
super.viewDidLoad()
//init toolbar
let toolbar:UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 30))
//create left side empty space so that done button set on right side
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneBtn: UIBarButtonItem = UIBarButtonItem(title: “Done”, style: .done, target: self, action: Selector(“doneButtonAction”))
toolbar.setItems([flexSpace, doneBtn], animated: false)
toolbar.sizeToFit()
//setting toolbar as inputAccessoryView
self.textField1.inputAccessoryView = toolbar
self.textField2.inputAccessoryView = toolbar
}
func doneButtonAction() {
self.view.endEditing(true)
}
La respuesta de Ramis que permite crear la vista de accesorios de teclado con el Storyboard es una gran estrategia. ¡Es 2017 después de todo! (Lo siento, pero no tengo suficientes puntos para votar).
Permítame agregar un poco a la respuesta (para mantener dentro de las reglas de SO). Tengo una vista con varios campos de texto. Después de implementar cada uno de los pasos de Ramis, adjunté la vista de accesorios a todos los campos de texto de esta manera:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
_activeTextField = textField;
[_activeTextField setInputAccessoryView:_iboKeyboardTools];
}
¡Tan fácil en comparación con implementar todo esto en código! Simplemente construya la vista de accesorios en el Guión gráfico y adjúntela una y otra vez.
Se puede hacer usando el guión gráfico:
- Agregue UITextField a la vista UIViewController.
- Agregue UIToolbar en el primer nivel de UIViewController
- Agregue UIBarButtonItem en la barra de herramientas de la UIT.
- Conecte UItoolbar al código utilizando IBOutlet.
- Conecte UIBarButtonItem al código usando IBAction (como lo hizo DidClick).
- Haga que el UITextField se delegue a UIViewController.
- En la función didClick finalice la edición ( view.endEditing (true) )
- En la función delegada, textFieldShouldBeginEditing debe ser: textField.inputAccessoryView = toolbar y devuelve true .
Solución para Swift 4 usando una clase personalizada. Puede utilizar esta clase en su Storyboard y archivos .xib.
class UITextFieldWithDoneButton: UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addDoneButtonOnKeyboard()
}
fileprivate func addDoneButtonOnKeyboard() {
let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
doneToolbar.barStyle = .default
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonAction))
let items = [flexSpace, done]
doneToolbar.items = items
doneToolbar.sizeToFit()
self.inputAccessoryView = doneToolbar
}
@objc fileprivate func doneButtonAction() {
self.resignFirstResponder()
}
}
Agregue UIToolBar como vista personalizada que tendrá el botón UIBarButtonItem como Hecho en él.
Esta es una forma más segura y limpia de agregar el botón Hecho a cualquier tipo de teclado. Cree UIToolBar agregue el botón Hecho y configure inputAccessoryView de cualquier UITextField o UITextView. ]; }
SWIFT 3
var ViewForDoneButtonOnKeyboard = UIToolbar()
ViewForDoneButtonOnKeyboard.sizeToFit()
var btnDoneOnKeyboard = UIBarButtonItem(title: "Done", style: .bordered, target: self, action: #selector(self.doneBtnFromKeyboardClicked))
ViewForDoneButtonOnKeyboard.items = [btnDoneOnKeyboard]
myTextField.inputAccessoryView = ViewForDoneButtonOnKeyboard
Función
@IBAction func doneBtnfromKeyboardClicked (sender: Any) {
print("Done Button Clicked.")
//Hide Keyboard by endEditing or Anything you want.
self.view.endEditing(true)
}
Swift 3:
func setDoneOnKeyboard() {
let keyboardToolbar = UIToolbar()
keyboardToolbar.sizeToFit()
let flexBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneBarButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(InsertStatusVC.dismissKeyboard))
keyboardToolbar.items = [flexBarButton, doneBarButton]
self.fullNameTextField.inputAccessoryView = keyboardToolbar
}
@objc func dismissKeyboard() {
view.endEditing(true)
}