1

Ich habe ein TextField und ein TextView in meinem ViewController. Der ViewController folgt sowohl UITextFieldDelegate als auch UITextViewDelegate und deren Delegate-Methoden.Swift Rücktritt TextView von Ersthelfer

Ich möchte das TextField oder die TextView von der ersten Antwort beenden, wenn die Schaltfläche "Zurück" geklickt wird. Ich implementierte func textFieldShouldReturn(_ textField: UITextField) -> Bool func textFieldDidEndEditing(_ textField: UITextField) func textViewShouldReturn(_ textView: UITextView) -> Bool func textViewDidEndEditing(_ textView: UITextView) und textField.resignFirstResponder() + textView.resignFirstResponder() in der entsprechenden ShouldReturn Methode.

Wenn ich auf die Zurück-Schaltfläche klicke, tritt das TextField erfolgreich zurück und die Tastatur versteckt sich; Im Fall von TextView fügt die Return-Schaltfläche einfach eine neue Zeile zur TextView hinzu; Die textViewShouldReturn(_:) wird überhaupt nicht aufgerufen.

Kann jemand bitte den Unterschied zwischen textFieldShouldReturn(_:) und textViewShouldReturn(_:) erklären und wie kann ich den TextView als Ersthelfer abmelden?

Dank

import UIKit 

class DetailViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate { 

@IBOutlet weak var date: UITextField! 
@IBOutlet weak var noteText: UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    date.delegate = self 
    noteText.delegate = self 
} 


//MARK: UITextViewDelegate 

func textViewShouldEndEditing(_ textView: UITextView) -> Bool { 
    // Hide the keyboard. 
    textView.resignFirstResponder() 
    return true 
} 


func textViewDidEndEditing(_ textView: UITextView) { 
} 

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
    // Hide the keyboard. 
    textField.resignFirstResponder() 
    return true 
} 


func textFieldDidEndEditing(_ textField: UITextField) { 
} 

} 
+0

können Sie Return-Taste für Textfelder verwenden nicht die Textview – Mannopson

+0

eine Geste oder eine Funktion, um es erstellen und Sie werden fein – Mannopson

Antwort

2

Es gibt einen Trick Textview zurückzutreten.

extension ViewController: UITextViewDelegate { 
    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 

     if text == "\n" { 
      textView.resignFirstResponder() 
      return false 
     } 
     return true 
    } 
} 

Stellen Sie sicher, dass Viewcontroller als Textview Delegierter ist

+0

Dank sein. Was ist dann textViewShouldReturn (_ :) und wann sollte es verwendet werden? –

+0

Es gibt keinen TextViewShouldReturn (_ :) in UITextViewDelegate Funktionen https://developer.apple.com/reference/uikit/uitextviewdelegate – Lawliet

Verwandte Themen