swift - 在 swift 中屏蔽 textField

标签 swift uitextfield

如何在 swift 中为文本字段设置掩码?例如,电话文本字段,当用户键入它时显示为电话格式,如 objective-C 中的以下代码:

self.textField.mask = @"(##)####-####";

最佳答案

Swift 4&&5 非常简单的电话号码掩码

您必须将此代码用作文本字段委托(delegate)。

 func formattedNumber(number: String) -> String {
                 let cleanPhoneNumber = number.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
                 let mask = "## ### ###"
                 var result = ""
                 var index = cleanPhoneNumber.startIndex
                 for ch in mask! where index < cleanPhoneNumber.endIndex {
                     if ch == "#" {
                         result.append(cleanPhoneNumber[index])
                         index = cleanPhoneNumber.index(after: index)
                     } else {
                         result.append(ch)
                     }
                 }
                 return result
             }
             func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string:  String) -> Bool {
                 guard let text = textField.text else { return false }
                 let newString = (text as NSString).replacingCharacters(in: range, with: string)
                 textField.text = formattedNumber(number: newString)
                 return false
             }

关于swift - 在 swift 中屏蔽 textField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016350/

相关文章:

cocoa - Appkit/Quartz/CG 在自定义 View 中正确嵌套 NSTextView

ios - 不同的有效代码示例抛出相同的错误

ios - Swift Realm 使用数组过滤 List 属性

ios - 如何从 RPScreenRecorder.shared().startCapture 中的 CMSampleBuffer 获取视频帧?

ios - 为什么我的 UITextfField 似乎不是零,即使我将该字段留空?我的 if 语句的 "else"部分未被读取

ios - 将自定义输入 View 设置为全局所有文本字段的最简单方法

arrays - Swift 按特定顺序加入 2 个数组

ios - 如果用户单击单个 View Controller 内的按钮,是否可以显示其他文本字段?

iOS 11 - 禁用智能引号

ios7 - 将 inputAccessoryView - UIToolBar 上 UITextField 上的文本镜像到 navigationController.toolbar 上 UITextField 上的文本