我希望在没有用户触摸用户名文本字段的情况下显示键盘。
我找到了来自How to open the keyboard automatically on UITextField?
的代码asd
所以我试过这个
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
textField.becomeFirstResponder()
}
但是它会出错
线程1:致命错误:在解包可选值时意外发现nil
答案 0 :(得分:0)
如果您正在使用故事板,请仔细检查您的插座是否已连接,然后尝试:
1)将userNameTF.becomeFirstResponder
放在viewDidLoad()
而不是viewDidAppear()
。
2)转换
@IBOutlet var userNameTF: UITextField!
@IBOutlet var passwordTF: UITextField!
为:
@IBOutlet weak var userNameTF: UITextField!
@IBOutlet weak var passwordTF: UITextField!
答案 1 :(得分:0)
我认为问题在于IBOutlets
@IBOutlet var userNameTF: UITextField!
1)你在这里使用了一个强大的引用,这将导致你的问题,即使在提出的这些TF的视图被删除后,内存将不会被释放,因为对属性的引用很强
2)尝试使用@IBOutlet weak var usernameTF: UITextField!
并在进行更改时从storyBoard中删除已连接的插座并将其与Written outlet重新连接并构建
崩溃 - Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
发生在两种情况下 -
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
尝试使用提到的解决方案,如果问题仍然存在,请告诉我
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()
}