簡體   English   中英

Swift UITextfield 委托 Function “shouldChangeCharactersIn” - 如何停止編輯 UITextfield?

[英]Swift UITextfield Delegate Function "shouldChangeCharactersIn" - How can I stop editing for a second UITextfield?

我有一個問題,我有兩個文本字段,並且兩個文本字段的最大長度均為 20 個字符。

我使用以下代碼,但它僅適用於我的第一個文本字段。 我做錯了什么? 我希望有一個人可以幫助我。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        
        if textField === nameTextField {
            
            let currentText = nameTextField.text
            guard let stringRange = Range(range, in: currentText!) else {
                return false
            }
            
            let updateText = currentText?.replacingCharacters(in: stringRange, with: string)
            return updateText?.count ?? 0 < 20
            
        } else if textField === numberTextField {
            let currentText = numberTextField.text
            guard let stringRange = Range(range, in: currentText!) else {
                return false
            }
            
            let updateText = currentText?.replacingCharacters(in: stringRange, with: string)
            return updateText?.count ?? 0 < 20
            
        }
        return true
    }

您可能忘記為第二個設置delegate

也不需要這個復雜的邏輯:只需保留前 20 個:

textView.text = String(textView.text.prefix(20))

暫無
暫無

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

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