Как создать подвижные и изменяемые размеры текстовых полей, используя сенсорный ввод в iOS? - PullRequest
0 голосов
/ 09 мая 2019

Я хочу, чтобы в моем приложении были текстовые поля, чтобы я мог расположить их там, где я хочу, и изменить их размер с помощью касания, как мы делаем на страницах после добавления текстового поля.

1 Ответ

0 голосов
/ 09 мая 2019

То, что вы ищете, это распознаватель жестов. Вы либо добавляете по одному в каждое из ваших текстовых полей, либо добавляете по одному в его суперпредставление. Давайте посмотрим, добавив его в суперпредставление.

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

Я надеюсь, что код говорит для большей части процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...