以编程方式创建UItTextFields

时间:2017-11-05 00:18:13

标签: ios textfield uipangesturerecognizer programmatically-created

我正在尝试利用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()
}

1 个答案:

答案 0 :(得分:0)

didPan 中,您可以从识别器中检索textField,如:

let textField = sender.view as TextField

然后改变textField的框架。