2017-01-04 2 views
-3

Ich habe eine UIView wo schreibe ich Aktionen für Buttons. In der XIB-Datei habe ich eine Leiste, die über der Tastatur mit diesen Tasten steht. Wie man diese Knöpfe mit ViewController verbindet, die UITextView hat und wenn Knopf geklickt wird, sollte in UITextView getan werden (Beispiel: Wenn ich die "Fett" Taste anklicke, sollte der ausgewählte Text in UITextView fett sein) enter image description here [! hier] [2]] [2]Verbinde UIView mit XIB mit einem anderen ViewController

import UIKit 

protocol NoteViewDelegate { 

    func didUpdateNoteWithTitle(newTitle : String, andBody newBody : String) 
} 

class NewNoteViewController: UIViewController , UITextViewDelegate { 

    var delegate : NoteViewDelegate? 


    @IBOutlet weak var textBody: UITextView! 

    var strBodyText : String! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.textBody.text = self.strBodyText 

     self.textBody.becomeFirstResponder() 

     self.textBody.delegate = self 

     NotificationCenter.default.addObserver(self, selector: #selector(NewNoteViewController.updateTextView(notification:)) , name: Notification.Name.UIKeyboardWillChangeFrame, object: nil) 
     NotificationCenter.default.addObserver(self, selector: #selector(NewNoteViewController.updateTextView(notification:)) , name: Notification.Name.UIKeyboardWillHide, object: nil) 

     textBody.inputAccessoryView = Bundle.main.loadNibNamed("CustomAccessoryView", owner: self, options: nil)?.first as? UIView 
} 

    func updateTextView (notification:Notification) { 
     let userInfo = notification.userInfo! 

     let keyboardEndFrameScreenCoordinates = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 
     let keyboardEndFrame = self.view.convert(keyboardEndFrameScreenCoordinates, to: view.window) 

     if notification.name == Notification.Name.UIKeyboardWillHide { 
      textBody.contentInset = UIEdgeInsets.zero 

     }else{ 
      textBody.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardEndFrame.height, right: 0) 

      textBody.scrollIndicatorInsets = textBody.contentInset 
    } 
     textBody.scrollRangeToVisible(textBody.selectedRange) 
} 

Antwort

0

Wie diese Schaltflächen, um Viewcontroller zu verbinden, die UITextView

der view-Controller einen Verweis auf die Bar in der .xib Datei hat zu der Zeit die Bar ist geladen. Daher hat es Verweise auf die Schaltflächen. Daher kann addTarget(_:action:for:) aufgerufen werden, um die Schaltflächenaktionen zum Aufrufen einer Methode des Ansichtscontrollers zu konfigurieren, die wiederum den Text in der Textansicht fett formatieren kann.

+0

Ich weiß nicht wo ich "addTarget (_: action: for :)" nennen soll. Ich habe diese Leiste mit Schaltflächen in der .xib-Datei erstellt. –

+0

Sie haben Ihren Code nicht gezeigt, wie Sie die _.xib_ laden, über die Sie gesprochen haben, also kann ich Ihnen nicht über das hinaus sagen, was ich gesagt habe: Wenn Sie es laden, haben Sie die Referenz, die Sie brauchen. Du hast einen völlig sinnlosen Screenshot gezeigt. Der Code ist wichtig. – matt

+0

Hahaha yeah Ich weiß, ich wollte die Tasten zeigen, und hier ist der Code –

Verwandte Themen