2017-05-10 2 views
1

ich mit Instanziieren meiner InputAccessoryView aus einer .xib Datei ein Problem habe, wo die inputAccessoryView nicht auf Eingabe reagiert:Swift 3: InputAccessoryView aus .xib Datei instanziiert

private var conversationToolBar = ConversationToolBar() 

override var inputAccessoryView: UIView? { 
    return self.conversationToolBar 
} 

enter image description here

wenn ich instanziiert meine inputAccessoryView von einem Verfahren (createAccessoryView):

private var conversationToolBar = ConversationToolBar().createAccessoryView(width: UIScreen.main.bounds.width) 

Meine Klasse:

class ConversationToolBar: UIView { 

@IBOutlet var view: UIView! 

override init(frame: CGRect) { 
    super.init(frame: frame) 
    self.view = UINib(nibName: "ConversationToolBar", bundle: nil).instantiate(withOwner: self, options: nil).first as! UIView 
    self.addSubview(self.view) 
    self.view.frame = self.bounds 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    self.view = UINib(nibName: "ConversationToolBar", bundle: nil).instantiate(withOwner: self, options: nil).first as! UIView 
    self.addSubview(self.view) 
    self.view.frame = self.bounds 
} 

func createAccessoryView(width: CGFloat) -> UIView { 
    let accessoryView = UIView(frame: CGRect(x: 0, y: 0, width: width, height: 100)) 
    accessoryView.backgroundColor = UIColor.blue 

    let closeLabel = UITextField(frame: accessoryView.frame) 
    closeLabel.font = UIFont.boldSystemFont(ofSize: 14) 
    closeLabel.text = "Hello" 
    closeLabel.textColor = UIColor.white 
    closeLabel.textAlignment = .center 
    accessoryView.addSubview(closeLabel) 

    return accessoryView 
} 
} 

Das Verhalten funktioniert wie erwartet.

enter image description here

Kann mir jemand helfen? Danke

Antwort

0

Ich hatte dasselbe Problem mit zeigt inputAccessoryView wie erwartet, und fixiert es mit dem Aufruf dieser Methode Eingang oder Zubehör Ansicht zu aktualisieren:

closeLabel.reloadInputViews() 

Updates die individuelle Eingabe und Zubehör Ansichten, wenn das Objekt der Ersthelfer. Mit dieser Methode können Sie die benutzerdefinierte Eingabe aktualisieren oder die mit dem aktuellen Objekt verknüpfte Zubehöransicht anzeigen, wenn es sich bei um den ersten Beantworter handelt. Die Ansichten werden sofort ersetzt, dh , ohne sie zu animieren. Wenn das aktuelle Objekt nicht der Ersthelfer ist, hat diese Methode keine Wirkung.

Verwandte Themen