如何在 Swift 中限制 UITextField 中的某些字符?

Dyl*_*and 6 uitextfield swift swift2

我正在创建一个在启动时要求输入用户名的琐事应用程序。我想让它无法使用诸如 #$@!^& 等字符(还包括“空格”)。我在这里查看了这篇文章但它完全是用 Objective-C 编写的。提前致谢。

use*_*232 5

Swift 4 iOS 11.2.x 基于使用扩展,在此示例中测试字符串是否为有效的十六进制数。

extension String {

var containsValidCharacter: Bool {
    guard self != "" else { return true }
    let hexSet = CharacterSet(charactersIn: "1234567890ABCDEFabcdef")
    let newSet = CharacterSet(charactersIn: self)
    return hexSet.isSuperset(of: newSet)
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以像使用 UITextFieldDelegate 一样使用它。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    return (string.containsValidCharacter)
}
Run Code Online (Sandbox Code Playgroud)

虽然我在之前的一篇文章中读到 CharacterSets 不支持由多个 Unicode.Scalar 组成的字符;所以我想请谨慎使用。


小智 2

internal func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool{
     if let text = string{
           if text == "#" || text == "$" || text == "!"{ \\and so on
              return false
           }
     }
     return true
}
Run Code Online (Sandbox Code Playgroud)