【问题标题】:How to prevent specific characters from being typed in textfield?如何防止在文本字段中输入特定字符?
【发布时间】:2016-05-03 04:39:39
【问题描述】:

我想知道如何防止在 UITextfield 中输入某些字符。例如,如果我不希望在此文本字段中输入字母 A、G、P、Q、X,但允许使用其余字母。

我对此很陌生,感谢您的帮助!

【问题讨论】:

  • 请检查我的回答是否有帮助?

标签: ios swift uitextfield


【解决方案1】:

您需要为此使用 UITextViewDelegate。在其中一个委托方法中捕获用户的输入,并根据需要进行处理。

这里是它的 Apple 参考:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextViewDelegate_Protocol/#//apple_ref/occ/intfm/UITextViewDelegate/textView:shouldChangeTextInRange:replacementText:

编辑:

您可能需要使用此功能。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    inputString = inputString.stringByReplacingCharactersInRange(range, withString: string)

这实际上取决于您要如何处理“不允许”特定字符。

【讨论】:

  • 感谢您的指导。如果问的不多,您能否提供一些示例代码?我对 Swift 非常陌生。非常感谢。
  • 检查我的编辑...这个链接也可能有帮助:stackoverflow.com/a/31502884/1585677
  • 感谢您的帮助!
  • 您可以检查该委托方法中的特定字符,也可以实际检查正在输入的字符的 ascii 值。如果您的应用用于多个区域,您可能需要检查每个字符的 ascii 值,这样您就不必为每种语言输入每个特定字符
【解决方案2】:

我会用 ASCII 码来处理这类问题。确保包含您的 textField 委托协议(UITextFieldDelegate)并将 textField 委托分配给 self。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

        var singleChar = string

        let code = singleChar.unicodeScalars.first?.value

        print(code)

        if(code == 65 || code == 71 || code == 80 || code == 81 || code == 88 )
        {

        return false;
        }

        return true;

    }

【讨论】:

  • 如果用户粘贴一大块文本,此方法将不起作用,因为它不仅仅是一个字符,这是不正确的假设。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
相关资源
最近更新 更多