2017-11-06 1 views
0

ユーザー名のテキストフィールドにタッチしないでキーボードを表示したいですか?致命的なエラー:予期せずオプションをアンラップしながら、nilを見つけ キーボードを自動的にポップアップさせるには

私はだから私はこの

@IBOutlet var userNameTF: UITextField! 

@IBOutlet var passwordTF: UITextField! 


override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    userNameTF.becomeFirstResponder() 

} 

を試みたが、それは

は、スレッド1の誤差を与えるHow to open the keyboard automatically on UITextField?

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    textField.becomeFirstResponder() 
} 

からコードを見つけました値

+0

なぜあなたは 'IBOutlets'を宣言していますか? (1)IBでこれらのUITextFieldsを定義する、(2)実際にそれらを配線する、そしてほとんどの場合(3)**強制的にアンラッピングしない限り、あなたはしないでください。私のベストアイデア?このエラーが何を意味するのかを含めて、いくつかのことを学びます(ヒント:毎週この質問のエラーがいくつか表示されます)。また、何が良い質問になりますか(*あなたはIBを使用していますか?)最後に、キーボード*のコードをどうやって引き上げるのか。 – dfd

+0

IBOutletをストーリーボード経由で接続しましたか? – Maor

答えて

0

コンセントが接続されているかどうかを確認するストーリーボードを使用している場合は、

userNameTF.becomeFirstResponderviewDidAppear()の代わりにviewDidLoad()に配置してください。

2)

@IBOutlet var userNameTF: UITextField! 
@IBOutlet var passwordTF: UITextField! 

に変換:

@IBOutlet weak var userNameTF: UITextField! 
@IBOutlet weak var passwordTF: UITextField! 
+0

返信ありがとうございます。私はあなたの方法を試して、それは同じエラーを与える – Sugarman

+0

これは私のXCodeで動作@ Sugarman。 viewDidLoad()に移動したときに、viewDidAppear()から削除されたuserNameTF.becomeFirstResponderを確認してください。これで問題が解決しない場合は、私たちと共有していないものによってこのエラーが生成されていないかどうかを確認してください。あなたはviewDidLoad()でuserNameTF.becomeFirstResponderをコメントアウトすると、まだエラーが出ますか? –

+0

ありがとうございます。問題は解決しました。 – Sugarman

0

私は問題はあなたが問題を引き起こすであろう、ここで強い参照を使用しているIBOutlets

@IBOutlet var userNameTF: UITextField! 

1)であると思います後でこれらのTFを削除して表示されたビューが削除されても、メモリはプロパティへの参照として解放されません強い

2)

クラッシュを@IBOutlet weak var usernameTF: UITextField!を使用してみてください、あなたが作るときに変更がストーリーボードから接続された出口を削除すると書かれて口でそれを再接続して構築 -

1) This is occurring as you are trying to access a property which is not properly connected 

2) When you are Presenting the same presented view In hierarchy 
から Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

が2の場合に発生します

上記のソリューションをお試しください。問題が解決しない場合は、

import UIKit 

class TFVC: UIViewController,UITextFieldDelegate { 

    @IBOutlet weak var usernameTF: UITextField! 
    @IBOutlet weak var passowrdTF: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     usernameTF.delegate = self 
     passowrdTF.delegate = self 

    } 

    override func viewDidAppear(_ animated: Bool) { 
     usernameTF.becomeFirstResponder() 
    } 
+0

問題は解決しました。どうもありがとう! – Sugarman