0

テキスト フィールド アウトレット コレクションを取得し、そこに 6 つのテキスト フィールドをバインドします。テキストフィールドアウトレットコレクションにある次のテキストフィールドのFirstResponderになりたいです。ストーリーボードから textfields タグ 0 から 5 を付けました。見る、

メインViewController:

class ViewController: UIViewController {

    @IBOutlet var txtSignUp: [UITextField]!
    var arrayPlaceHolder:NSArray!

    override func viewDidLoad() {
        super.viewDidLoad()

        arrayPlaceHolder = NSArray(array: ["1","2","3","4","5","6"])
        self.setTextFieldValue()
    }

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

    private func setTextFieldValue(){

        for txtField in txtSignUp{
            let tagTxt = txtField.tag
            txtField.attributedPlaceholder = NSAttributedString(string:arrayPlaceHolder[tagTxt] as! String, attributes:[NSForegroundColorAttributeName:UIColor.black])
            if(tagTxt != ((arrayPlaceHolder.count) - 1)){
                txtField.returnKeyType = .next
            }
            txtField.delegate = self
        }
    }

}

extension ViewController:UITextFieldDelegate{

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        textField.resignFirstResponder()

            for txt in txtSignUp{
                let nextTxt = (textField.tag + 1)
                if txt.tag == nextTxt {
                    txt.becomeFirstResponder()
                    break
                }
            }
            return true
        }
}

エラー:

そのビューはウィンドウ階層にありません!

説明:

このコードでは、becomeFirstResponder として次のテキスト フィールドになることができません。

誰でもこの問題を解決するのを手伝ってくれますか?

4

2 に答える 2

0

エラーを再現しようとしましたが、成功しませんでした。ストーリーボードをチェックしてください。Xcode バージョン 8.2。スイフト3。

ここに画像の説明を入力

コードをコピーして貼り付けただけで問題なく動作するため、詳細を教えてください。

于 2016-12-21T09:24:42.527 に答える