Я хочу иметь возможность редактировать текстовые поля в порядке, указанном тегами.Много исследований безрезультатно.Я новичок - PullRequest
0 голосов
/ 28 декабря 2018

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

Это часть гораздо более крупного проекта, над которым я работаю.Это критическая особенность, так как есть еще несколько полей (более 20).Я пытался использовать TextDidEndEditing тоже.Это не помогло.

import UIKit
import os.log

class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var Par1: UITextField!
@IBOutlet var Par2: UITextField!
@IBOutlet var Par3: UITextField!
@IBOutlet var Par4: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically    from a nib.
    Par1.delegate = self
    Par1.tag = 0
    Par2.delegate = self
    Par2.tag = 1
    Par3.delegate = self
    Par3.tag = 2
    Par4.delegate = self
    Par4.tag = 3
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
    var nextTag:Int
    textField.resignFirstResponder()
    if (textField.tag == 3) {
        nextTag = 0
    } else {
        nextTag = textField.tag + 1
    }
    if let nextResponder = textField.superview?.viewWithTag(nextTag) as? UITextField {
        nextResponder.becomeFirstResponder()
    } else {
        textField.resignFirstResponder()
    }
    return true
}

@IBAction func Par1Entered(_ sender: UITextField) {
    Par1.text = sender.text
}

@IBAction func Par2Entered(_ sender: UITextField) {
    Par2.text = sender.text
}

@IBAction func Par3Entered(_ sender: UITextField) {
    Par3.text = sender.text
}

@IBAction func Par4Entered(_ sender: UITextField) {
    Par4.text = sender.text
}

}

1 Ответ

0 голосов
/ 28 декабря 2018

Сделайте теги полей последовательными, и в textFieldShouldReturn сделайте следующее:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        let nextTag = textField.tag + 1

        if let nextResponder = textField.superview?.viewWithTag(nextTag) {
            nextResponder.becomeFirstResponder()
        } else {
            textField.resignFirstResponder()
        }


        return false
    }

Если вы хотите перейти к следующему полю, не нажимая кнопку клавиатуры Next , есть несколькодругие способы достижения этого.

...