2017-10-08 7 views
0

Ich kann nicht scheinen, meine textViewDidBeginEditing Funktion aufzurufen, wenn meine Textansicht in meinem ViewController bearbeitet wird.Aufruf von TextViewDidBeginEditing, wenn UITextView in benutzerdefinierte Zelle bearbeitet wird

Hier ist der Code für meine benutzerdefinierte Zelle:

class NoteDetailCell: UITableViewCell { 
    let noteText: UITextView = { 
     let label = UITextView() 
     label.font = UIFont(name: "Nunito",size: 16) 
     label.backgroundColor = UIColor(r: 244, g: 244, b: 255) 
     label.text = "Have to check out this food place. The best burgers in town." 
     label.textColor = UIColor(r: 88, g: 88, b: 88) 
     label.translatesAutoresizingMaskIntoConstraints = false 
     return label 
    }() 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: .`default`, reuseIdentifier: reuseIdentifier) 

     self.selectionStyle = UITableViewCellSelectionStyle.none 

     addSubview(noteText) 

     noteText.topAnchor.constraint(equalTo: self.topAnchor, constant: 10).isActive = true 
     noteText.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 8).isActive = true 
     noteText.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -8).isActive = true 
    } 
} 

Hier ist mein Code für meinen Tableview:

class TripNoteViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextViewDelegate { 
    var noteDetails: UITableView = UITableView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     noteDetails.frame = CGRect(x: 0, y: 65, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height-140) 

     noteDetails.delegate = self 
     noteDetails.dataSource = self 
     noteDetails.separatorColor = UIColor.clear 
     noteDetails.register(NoteDetailCell.self, forCellReuseIdentifier: "detailsCell") 
     noteDetails.register(NoteOriginCell.self, forCellReuseIdentifier: "visitTrip") 
     noteDetails.register(NoteActionsCell.self, forCellReuseIdentifier: "noteActions") 

    } 

    func textViewDidBeginEditing(noteText: UITextView) { 
     print("noteText text") 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 3 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: detailsCell) as! NoteDetailCell 
     cell.noteText.isScrollEnabled = false 
     cell.noteText.delegate = self 
     return cell 
    } 
} 

ich die textViewDidBeginEditing Funktion von meinem Viewcontroller nennen möchte, wenn das Textfeld in meinem benutzerdefinierten Zelle wird bearbeitet. Irgendwelche Vorschläge, was ich falsch mache?

Antwort

0

Sie haben die durch das Protokoll UITextViewDelegate definierte Methode nicht implementiert. Wechsel:

func textViewDidBeginEditing(noteText: UITextView) { 
    print("noteText text") 
} 

zu:

func textViewDidBeginEditing(_ noteText: UITextView) { 
    print("noteText text") 
} 

Da Sie die falsche Signatur haben, es ist nicht genannt.

Verwandte Themen