我有一個視圖控制器與兩個UITableViewCells
和每個單元格包含UITextField
。在我的導航欄中,我有一個名爲「保存」的右側欄按鈕,除非兩個文本框都包含文本,否則該按鈕將被禁用。保存按鈕的默認狀態被禁用。從禁用到啓用的轉換工作正常,但在其中一個文本框被清空時禁用按鈕很困難。確定UITextfield是否爲空後逐個刪除字符
我目前做如下表現:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if title == "Password"{
if textField.tag == 1{
if (textField.text?.isEmpty)!{
passwordField1Empty = true
}
else {
passwordField1Empty = false
}
}
else if textField.tag == 2 {
if (textField.text?.isEmpty)! {
passwordField2Empty = true
}
else {
passwordField2Empty = false
}
}
if passwordField1Empty == false && passwordField2Empty == false {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
else {
self.navigationItem.rightBarButtonItem?.isEnabled = false
}
}
else {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
return true
}
請告訴我造成的問題是,如果用戶可以追溯到並刪除一個在文本字段一個每個字符,textField.text?.isEmpty
將被調用每次。當剩下最後一個字符時,textField.text?.isEmpty
將在刪除最後一個字符前被調用,所以它最終返回false。 textField.text?.isEmpty
將不會返回true,除非用戶再次按下刪除按鈕,即使沒有剩下要刪除的東西。
除了'newString'沒有'text'屬性 - 它只是'newString.isEmpty'這個工作。 – Brosef
哦,沒錯。對不起,錯誤!剛編輯我的答案! –