То, что вы ищете, это распознаватель жестов. Вы либо добавляете по одному в каждое из ваших текстовых полей, либо добавляете по одному в его суперпредставление. Давайте посмотрим, добавив его в суперпредставление.
class ViewController: UIViewController {
private var fields: [UITextField] = [UITextField]()
private var selectedField: UITextField?
override func viewDidLoad() {
super.viewDidLoad()
view.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(onPan)))
view.addGestureRecognizer({
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(addNewField))
doubleTap.numberOfTapsRequired = 2
return doubleTap
}())
}
@objc private func addNewField(_ sender: UIGestureRecognizer) {
let newField = UITextField(frame: CGRect(x: 0.0, y: 0.0, width: 200.0, height: 50.0))
newField.backgroundColor = UIColor.lightGray
newField.center = sender.location(in: view)
view.addSubview(newField)
fields.append(newField)
}
@objc private func onPan(_ sender: UIGestureRecognizer) {
switch sender.state {
case .began:
selectedField = fields.first(where: { $0.bounds.contains(sender.location(in: $0)) })
case .changed:
selectedField?.center = sender.location(in: view)
default: break
}
}
}
Я надеюсь, что код говорит для большей части процедуры.