移动以编程方式创建的 UItTextFields
Moving programmatically created UItTextFields
我正在尝试利用 panGestureRecogniser 让我的第一个应用程序的用户能够移动以编程方式创建的文本字段。搜索解决方案后,我只找到了 IBOutlets 的过时代码。问题是我很难将新创建的文本字段的位置设置为用户拖动到的位置。当我在通过 IBOutlet 连接的情节提要中创建的文本字段上测试我的代码时,一切正常。我的问题是如何在 didPan 函数的位置与 generateTextField 函数创建的任何新标签之间建立连接。另一件事是我希望 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()
}
在 didPan 中,您可以从识别器中检索文本字段,例如:
let textField = sender.view as TextField
然后更改 textField 的框架。
我正在尝试利用 panGestureRecogniser 让我的第一个应用程序的用户能够移动以编程方式创建的文本字段。搜索解决方案后,我只找到了 IBOutlets 的过时代码。问题是我很难将新创建的文本字段的位置设置为用户拖动到的位置。当我在通过 IBOutlet 连接的情节提要中创建的文本字段上测试我的代码时,一切正常。我的问题是如何在 didPan 函数的位置与 generateTextField 函数创建的任何新标签之间建立连接。另一件事是我希望 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()
}
在 didPan 中,您可以从识别器中检索文本字段,例如:
let textField = sender.view as TextField
然后更改 textField 的框架。