2017-07-11 4 views
0

die Textansicht ist dynamisch, die eine Schaltfläche in der oberen rechten Ecke enthält. es funktioniert für Textfeld. nicht Schaltfläche in Textview zeigt ..Nicht möglich, Schaltfläche oben rechts in UITextView programmgesteuert in Swift

Warten ....

class CommonTextView: UITextView { 

private let microphoneButton = UIButton(type: .System) 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

    initTextView() 
} 

func initTextView() -> Void { 

    self.layer.cornerRadius = 7 

    microphoneButton.translatesAutoresizingMaskIntoConstraints = false 
    //microphoneButton.backgroundColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.3) 
    microphoneButton.setImage(UIImage(named: "mic"), forState: .Normal) 
    microphoneButton.tintColor = UIColor.darkGrayColor() 
    microphoneButton.addTarget(self, action: #selector(self.microphonePressed), forControlEvents: .TouchUpInside) 
    self.addSubview(microphoneButton) 

    let trailingConstraint = NSLayoutConstraint(item: microphoneButton, attribute: .Trailing, relatedBy: .Equal, toItem: self, attribute: .Trailing, multiplier: 1, constant: 0) 
    let topConstraint = NSLayoutConstraint(item: microphoneButton, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1, constant: 0) 
    let widthConstraint = NSLayoutConstraint(item: microphoneButton, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 40) 
    let heightConstraint = NSLayoutConstraint(item: microphoneButton, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 40) 
    self.addConstraints([trailingConstraint, topConstraint, widthConstraint, heightConstraint]) 

} 
+0

zeigen Sie Ihren Code bitte –

+0

Ich habe den Code aktualisiert –

+0

Können Sie auf den allgemeinen Ort klicken, wo Ihr Knopf sein sollte? Hat es irgendeinen Effekt? –

Antwort

0

Es ist zu kompliziert mit NSLayoutConstraint zu beschäftigen. Versuchen Sie stattdessen diesen einfachen Anchor-Layout-Code. Ersetzen Sie alles unter self.addSubView diesen einfachen fünf Zeilen Code

let margins = view.layoutMarginsGuide 
microphoneButton.trailingAnchor.constraint(equalTo: margins.trailingAnchor, constant: 0).isActive = true 
microphoneButton.topAnchor.constraint(equalTo: margins.topAnchor, constant: 100).isActive = true 
microphoneButton.widthAnchor.constraint(equalToConstant: 100).isActive = true 
microphoneButton.heightAnchor.constraint(equalToConstant: 30).isActive = true 
+0

Ich habe mit Ihrem Code ersetzt. aber Knopf ist nicht sichtbar. Jetzt ist es auch nicht für das Textfeld sichtbar. –

+0

@jayaraj Dann ist das Problem nicht der Knopf ist selbst. Können Sie bitte mehr Code für den Button posten? –

+0

Ich habe den Code aktualisiert .. –

0

für die richtigen Constraints Siehe rightAnchor arbeiten Textview nicht geben ihm self.view.rightAnchor

enter image description here

Das schwarze Teil ist textView und das orange Teil ist Button

import UIKit 

class ViewController: UIViewController { 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     view.addSubview(textView) 
     textView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 
     textView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true 
     textView.heightAnchor.constraint(equalToConstant: 200).isActive = true 
     textView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 


     textView.addSubview(button) 


     button.heightAnchor.constraint(equalToConstant: 50).isActive = true 
     button.widthAnchor.constraint(equalToConstant: 100).isActive = true 
     button.topAnchor.constraint(equalTo: textView.topAnchor).isActive = true 
     **button.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true** 
     view.bringSubview(toFront: button) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    let textView: UITextView = { 
     let label = UITextView() 
     // label.text = "Jeevan Chandra Tiwari" 
     label.backgroundColor = .black 
     label.textColor = .white 
     label.translatesAutoresizingMaskIntoConstraints = false 
     return label 
    }() 

    let button: UIButton = { 
     let button = UIButton(type: .system) 
     button.backgroundColor = .orange 
     button.setTitle("Click Me", for: .normal) 
     button.translatesAutoresizingMaskIntoConstraints = false 
     return button 
    }() 



} 
Verwandte Themen