简体   繁体   English

Swift UITextfield 委托 Function “shouldChangeCharactersIn” - 如何停止编辑 UITextfield?

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

I have a problem, I have two Textfields and want a max length of 20 Characters for both.我有一个问题,我有两个文本字段,并且两个文本字段的最大长度均为 20 个字符。

I use the following code but it only works for my first Textfield.我使用以下代码,但它仅适用于我的第一个文本字段。 What did I wrong?我做错了什么? I hope someone can help me.我希望有一个人可以帮助我。

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
    }

You probably forgot to set the delegate for the second one.您可能忘记为第二个设置delegate

Also no need for this complex logic: Just keep the first 20 like:也不需要这个复杂的逻辑:只需保留前 20 个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Swift3 iOS中的shouldChangeCharactersIn中为UITextField设置多个条件 - How to set multiple condition for UITextField in shouldChangeCharactersIn in Swift3 iOS 自定义UITextField委托方法shouldChangeCharactersIn没有被调用 - Custom UITextField Delegate method shouldChangeCharactersIn is not getting called UITextField委托“ shouldChangeCharactersIn”未在文本字段中首次输入 - UITextField Delegate “shouldChangeCharactersIn” not called for first entry in textfield 如何在 Swift 的子视图中访问 UITextfield? - How can I reach UITextfield in subviews in Swift? 如何在Swift中引用UITextField的文本? - How can I reference the text of a UITextField in Swift? 如何在编辑uitextfield时停止在uitableview中滚动 - how to stop scrolling in uitableview while editing uitextfield 如何快速显示第二个UIViewController中的UILabel上的UITextField数据? - How do I show UITextField data on a UILabel in a second UIViewController in swift? 我怎么知道编辑是在以UIPickerView作为输入的UITextField上开始的? - How can I know that editing began on a UITextField that has a UIPickerView as input? 如何在编辑时更改UITextField中的颜色 - How can I change color in UITextField when editing 当UITextField应该开始编辑时,如何显示UIViewController? - How can I present a UIViewController when a UITextField should begin editing?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM