2017-07-13 39 views
1

我正在製作一個簡單的聯繫我們表單,其中包含姓名,電子郵件地址和消息。我的viewDidLoad中的以下代碼是名稱文本字段的一個片段。當我打開聯繫表單時,我希望鍵盤在此字段中打開。Swift - 用鍵盤打開負載聯繫頁面打開

override func viewDidLoad() { 
    view.backgroundColor = UIColor.darkGray 
    let fullNameInput = UITextField() 
    fullNameInput.frame = CGRect(x: 15, y: 15, width: self.view.frame.width - 2 * margin, height: 50) 
    fullNameInput.placeholder = "Your Name" 
    let fullNameString = "Your Name" 
    let fullNamePlaceholder = NSMutableAttributedString(string: fullNameString) 
    let fullNameRange = (fullNameString as NSString).range(of: fullNameString) 
    fullNamePlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: fullNameRange) 
    fullNameInput.attributedPlaceholder = fullNamePlaceholder 
    fullNameInput.backgroundColor = .black 
    fullNameInput.delegate = self 
    fullNameInput.layer.cornerRadius = 5.0 
    fullNameInput.layer.borderWidth = 2.0 
    fullNameInput.layer.borderColor = UIColor.black.cgColor 

    fullNameInput.becomeFirstResponder() 
    self.view.addSubview(fullNameInput) 
} 

在瀏覽一個解決方案,我相信

fullNameInput.becomeFirstResponder() 

是的代碼,我想做到這一點就行了。但是,它並沒有這樣做。我在這裏錯過了什麼嗎?

其他問題

在此之後我也會使一個滾動視圖上面開放的鍵盤區域。

我怎樣才能得到鍵盤的框架?

我使用雨燕3.0和iOS 9.2

+0

首先是調用此方法,調用'super.viewDidLoad()'當u是在你的VC覆蓋任何生命週期功能。 – dirtydanee

+0

你用什麼操作系統版本?什麼Swift版本?在iOS 10.3上運行的Swift 3.0上將代碼粘貼到我的示例項目上,Simulator將打開鍵盤。 – dirtydanee

+0

Swift 3.0和iOS 9.2。我已將此信息添加到我的問題中,謝謝。我也接受了一個解決方案。 – ochhii

回答

1

你必須從viewDidAppear

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

你應該在調用super時使用'animated'屬性,而不是硬編碼'true'。 – dirtydanee

1

documentationbecomeFirstResponder()

決不呼籲一種觀點認爲,不是活動視圖 層次的一部分這一方法。

所以從viewDidLoad調用它是definitelly不是一個好主意。嘗試從viewDidAppear

0

您正在使fullNameInput成爲第一響應者之前,它被納入視圖。

只需先將其作爲子視圖添加,然後將其作爲第一響應者調用,它將起作用。

我會照mag_zbc說的去做。使用成爲第一個響應的ViewDidAppear