簡體   English   中英

Swift:成為 UITextField 上的第一響應者不工作?

[英]Swift: Become First Responder on UITextField Not Working?

我在 Storyboard 上創建了一個帶有一個 UITextField 的自定義 UIViewController。 viewDidLoad ,我將 UITextFIeld 設置為becomeFirstResponder ,什么也沒發生(沒有鍵盤彈出)。

然后我嘗試調用resignFirstResponder() ,但它返回 false。 接下來,我嘗試通過使用代碼循環所有子視圖來查找first responder是誰, 而不是使用私有 API 獲取當前第一響應者 事實證明,沒有一個子視圖是第一響應者。

我在故事板中的 ViewController

在此處輸入圖片說明

我的代碼

class BLTestViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet var tf: UITextField

    override func viewDidLoad() {
        super.viewDidLoad()

        tf.delegate = self
        tf.becomeFirstResponder()
        // Do any additional setup after loading the view.
    }
}

就這么簡單……為什么鍵盤沒有出現!!! 我所做的一件事是自動布局,但我不確定這是否會影響鍵盤彈出。

Swift 4 對我有用
嘗試一下

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

我只是通過調用self.tf.becomeFirstResponder() indside viewDidLoad()函數使用文本字段對其進行了測試,並且它的工作非常好。 正如 nflacco 剛剛指出的那樣,您需要通過按command + K來切換鍵盤,並禁用模擬器中的硬件鍵盤,如下所示:

  1. iOS 模擬器 -> 硬件 -> 鍵盤
  2. 取消選中“連接硬件鍵盤”

我認為

class BLTestViewController: UIViewController, UITextFieldDelegate {

@IBOutlet var tf: UITextField

    override func viewDidLoad() {
        super.viewDidLoad()

        tf.delegate = self
        self.focustf()
        // Do any additional setup after loading the view.
    }

    func focustf(){
    self.tf.becomeFirstResponder()
    }
}

斯威夫特 4 和 iOS 11

就我而言,無論我嘗試過什么,在嘗試此操作之前,我都無法設置第一響應者。

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if cell.isKind(of: YOURTABLEVIEWCELL.self) {
        if let yourCell = cell as? YOURTABLEVIEWCELL{
            yourCell.yourUiTextField.becomeFirstResponder()
        }
    }
}

希望這可以幫助遇到同樣問題的人。

按 command+shift+k 打開鍵盤。

試試這個

 DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                    textField.becomeFirstResponder()
                }

有時錯誤的是渲染視圖的時間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM