我正在尝试利用panGestureRecogniser使我的第一个应用程序的用户能够以编程方式创建文本字段。在搜索了解决方案之后,我只找到过时的代码,用于IBOutlets。问题是我很难将新创建的文本字段的位置设置为用户拖动到的位置。当我在文本字段上测试我的代码时,一切都工作得很好,通过IBOutlet连接故事板。我的问题是如何在didPan函数的位置和generateTextField func创建的任何新标签之间建立连接。另一件事是我希望mu用户能够创建许多文本字段,并且每个文本字段都应该是可拖动的,因此任何解决方案都应该包括它。我粘贴下面的代码:
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()
}
答案 0 :(得分:0)
在 didPan 中,您可以从识别器中检索textField,如:
let textField = sender.view as TextField
然后改变textField的框架。