2017-07-14 115 views
0

我有4個TextField對齊在一起,每個都有一個標記(1,2,3,4),它用作代碼輸入。我想確保何時點擊或點擊其他代碼輸入的當前字段將使當前字段成爲其第一響應者。becomeFirstResponder在swift中不顯示鍵盤3

示例場景

1 _ _ _

如果我點擊其他地方的第一個文本字段應該第一個文本框

使用下面的代碼,我能夠做的那麼點焦點,但問題是如果在代碼輸入中沒有當前的第一響應者,鍵盤不會出現。

func textFieldDidBeginEditing(_ textField: UITextField) { 
    if textField.tag != currentTag { 
     let currentResponder = textField.superview?.viewWithTag(currentTag) as? UITextField 
     currentResponder?.becomeFirstResponder() 
    } 
} 
+0

什麼確切的問題?鍵盤不會出現在輕敲文本字段? – Bhanupriya

+0

set currentTag = 1 defaultly.im不知道我是否正確理解了你的密碼 –

+0

@bhanupriya是的,鍵盤沒有出現,我想我在創建鍵盤之前斷開鍵盤,因爲在成爲第一響應者的過程中,我立即改變第一響應者。我也想出答案。 而不是使用textFieldDidBeginEditing我用textFieldShouldBeginEditing – niczm25

回答

1

這裏我們自定義的響應與挖掘文本框的默認響應overlaping,所以我推遲它0.1秒,並呼籲響應

斯威夫特3

func textFieldDidBeginEditing(_ textField: UITextField) { 
if textField.tag != currentTag { 
    let currentResponder = textField.superview?.viewWithTag(currentTag) as? UITextField 
    currentResponder?.perform(
       #selector(becomeFirstResponder), 
       with: nil, 
       afterDelay: 0.1 
      ) 
    } 
}