如何让键盘自动弹出

时间:2017-11-06 02:17:30

标签: ios swift

我希望在没有用户触摸用户名文本字段的情况下显示键盘。

我找到了来自How to open the keyboard automatically on UITextField?

的代码
asd

所以我试过这个

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

但是它会出错

线程1:致命错误:在解包可选值时意外发现nil

2 个答案:

答案 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()
    }