Ich versuche, panGestureRecogniser zu verwenden, um Benutzern meiner ersten App zu ermöglichen, programmgesteuert erstellte Textfelder zu verschieben. Nach der Lösung gesucht habe ich nur veralteten Code für IBOutlets gefunden. Das Problem ist, dass ich Schwierigkeiten habe, die Position neu erstellter Textfelder auf die Position zu setzen, an die sich die Benutzer hinziehen. Alles funktioniert gut, wenn ich meinen Code auf einem Textfeld in einem Storyboard, über ein IBOutlet verbunden, erstelle. Mein Problem ist, wie man eine Verbindung zwischen dem Standort von der didPan-Funktion und einem neuen Etikett herstellt, das von generateTextField func erstellt wird. Eine andere Sache ist, dass ich möchte, dass viele Benutzer in der Lage sind, viele Textfelder zu erstellen, und jedes sollte ziehbar sein, also sollte jede Lösung das beinhalten. Ich fügen Sie meinen Code unten:Programmgesteuertes Erstellen von UItTextFields
override func viewDidLoad() {
super.viewDidLoad()
}
func generateTextField() {
let textPanel = UITextField(frame: CGRect(x: 50, y: 50, width: 100, height: 30))
textPanel.textAlignment = NSTextAlignment.center
textPanel.textColor = UIColor.blue
textPanel.borderStyle = UITextBorderStyle.line
self.view.addSubview(textPanel)
let gest = UIPanGestureRecognizer(target: self, action: #selector(didPan))
textPanel.isUserInteractionEnabled = true
textPanel.addGestureRecognizer(gest)
}
@objc func didPan(sender: UIPanGestureRecognizer){
let location = sender.location(in: view)
if sender.state == .began {
print("Gesture began")
} else if sender.state == .changed {
print("Gesture is changing")
} else if sender.state == .ended {
print("Gesture ended")
}
}
@IBAction func generateTextFieldPressed(_ sender: Any) {
generateTextField()
}