如何在iOS中使用touch创建可移动和可调整大小的文本字段?

时间:2019-05-09 08:23:48

标签: ios swift uitextfield

我想在我的应用程序中拥有文本字段,以便可以将它们放置在所需的位置,并可以像使用添加文本字段后在页面中所做的操作一样,通过触摸来调整它们的大小。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是手势识别器。您可以在每个文本字段中添加一个,也可以在其超级视图中添加一个。让我们将其添加到超级视图中。

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
        }
    }
}

我希望代码能说明大多数过程。