2015-12-14 22 views
8

Desidero aggiungere il pulsante Done nella parte superiore della tastiera sul lato destro in iOS per un testoView.Per favore, dimmi come posso farlo?Come aggiungere pulsante fatto sulla tastiera sulla parte superiore della tastiera in IOS?

immettere descrizione dell'immagine qui

enter image description here

voglio ottenere qualcosa di simile a sopra la tastiera

+0

È possibile utilizzare UIToolbar! – Jaimish

+0

crea una visualizzazione personalizzata e mostrala nel tuo metodo di notifica 'keyboardOnScreen' ... anche con l'altezza della tastiera in modo da sapere dove posizionare la barra – Tj3n

+0

Come utilizzarla con la barra degli strumenti – Techiee

risposta

14

Spero che questo aiuto :)

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; 

e quindi aggiungere il metodo yourTextViewDoneButtonPressed

-(void)yourTextViewDoneButtonPressed 
{ 
    [self.yourTextView resignFirstResponder]; 
} 
+0

Come nascondere la tastiera? – Techiee

+0

@deepakkumar Cosa intendi? se vuoi nascondere la tastiera, chiama un metodo [self.yourTextView resignFirstResponder]; –

+0

Se la tastiera è nascosta, la barra degli strumenti non è nascosta. Per favore, spiega come fare? – Techiee

17

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) 
} 
11

Esso può essere fatto utilizzando storyboard:

  1. Aggiungi UITextField alla visualizzazione UIViewController.
  2. Aggiungi UIToolbar nel primo livello di UIViewController
  3. Aggiungi UIBarButtonItem nella UIToolbar.
  4. Connetti UItoolbar al codice utilizzando IBOutlet.
  5. Connetti UIBarButtonItem al codice utilizzando IBAction (come didClick).
  6. Fare in modo che UITextField esegua la delega a UIViewController.
  7. Alla didClick editing funzione end (view.endEditing (vero))
  8. Nella funzione textFieldShouldBeginEditing delegato dovrebbe essere: textField.inputAccessoryView = barra degli strumenti e restituisce vero.

enter image description here

+0

Questo è ottimo, tuttavia sto cercando lo stesso per UITextView? Cosa deve essere diverso. Ho modificato quello che pensavo, ma non posso assegnare il valore di tipo UIButtonBarItem! per digitare UIView – adamprocter

+1

@adamprocter È necessario assegnare la barra degli strumenti a textView.inputAccessoryView, ma non a UIButtonBarItem. – Ramis

0

La risposta da Ramis che permette la visualizzazione della tastiera accessoria per essere creato utilizzando lo storyboard è una grande strategia. Dopo tutto è il 2017! (Scusate, ma non ho abbastanza punti per invitarvi.)

Lasciatemi aggiungere un po 'alla risposta (per mantenere le regole SO). Ho una vista con più campi di testo. Dopo l'implementazione di ciascuna delle fasi Ramis' Ho attaccato l'accessoryView a tutti i campi di testo in questo modo:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
_activeTextField = textField; 
[_activeTextField setInputAccessoryView:_iboKeyboardTools]; 
} 

Così facile rispetto ad attuare tutto questo in codice! Basta costruire la vista accessoria in Storyboard- e allegarla ancora e ancora!

1

Aggiungi UIToolBar come vista personalizzata che avrà UIBarButtonItem come pulsante Fine in esso.

Questo è un modo più sicuro e più pulito per aggiungere il pulsante Fine a qualsiasi tipo di tastiera. Crea UIToolBar aggiungi Button Done su di esso e imposta inputAccessoryView su qualsiasi 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 

Funzione

@IBAction func doneBtnfromKeyboardClicked (sender: Any) { 
    print("Done Button Clicked.") 
    //Hide Keyboard by endEditing or Anything you want. 
    self.view.endEditing(true) 
    } 
Problemi correlati