ios - 输入文本字段时在文本字段字符之间添加连字符
问题描述
我有一个最大字符范围为 7 的文本字段,在 3 个字符后,我想添加减号字符,然后写下其余字符,如此示例 555-5555。这是我的代码,但它不起作用,我该如何解决这个问题?
// MARK: -UITextField Action
@objc func textFieldDidChanged(_ textField:UITextField ){
//print(PlaceTextField.text!)
if(textField.text?.count == 4){
if(textField.text?.contains("-"))!{
textField.text!.removeLast()
textField.text!.removeLast()
}
}
if(textField.text?.count == 3){
print("-\n")
textField.text = textField.text! + "-"
}
}
我试图从这里解决但无法正常工作。
解决方案
如果您不将粘贴文本复制到文本字段,这应该可以工作。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text, let textRange = Range(range, in: text) {
let updatedText = text.replacingCharacters(in: textRange, with: string)
if textField.text?.count == 3 && updatedText.count == 4 {
textField.text = textField.text! + "-" + string
return false
}
if textField.text?.count == 5 && updatedText.count == 4 {
let text = textField.text!
textField.text = String(text.prefix(3))
return false
}
}
return true
}
PS - 您的文本字段键盘应该是数字键盘。
yourTextField.keyboardType = .numberPad
推荐阅读
- java - java.lang.NumberFormatException:null,错误状态为 500
- swift - 如何在 swiftui 中使用自定义后退按钮导航多个屏幕
- php - Mpdf - 当字体系列不可用时如何禁用后备字体
- git - Bitbucket 正在混合成员之间的历史记录
- mediawiki - 为什么本地MediaWiki的html输出不完整?
- angular - 在使用 Angular 中的 navigatebyUrl 导航时在路由器插座中渲染两个组件
- java - 使用声纳属性文件从覆盖扫描中排除某些类
- google-sheets - 如何根据谷歌表格中的更多因素计算平均值
- php - 如何正确清理此输入?
- node.js - 如何在给定方位角和高度的情况下获得太阳的 3D 坐标(XYZ)?