You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用UITextField自动替换功能:保留三个点而非省略号

解决UITextField自动替换符号的问题

要避免UITextField自动将三个点替换为省略号、两个短横替换为长横,有两种精准的处理方式:

1. 直接禁用智能标点与自动替换(简单高效)

iOS的文本输入控件默认开启了智能标点替换功能,直接关闭对应的选项即可:

  • 代码实现:
    // 禁用智能破折号(阻止两个短横变成长横)
    textField.smartDashesType = .no
    // 禁用自动修正(阻止三个点被替换为省略号)
    textField.autocorrectionType = .no
    // iOS 15+ 可统一关闭所有智能标点
    if #available(iOS 15.0, *) {
        textField.smartPunctuationType = .no
    }
    
  • 可视化操作(Storyboard/XIB):
    选中目标UITextField,在右侧属性面板中:
    • 将「Auto-Correction」设为「No」
    • 将「Smart Dashes」设为「No」

2. 通过代理拦截文本变更(按需自定义)

如果需要保留其他自动修正功能,仅针对特定替换做拦截,可以实现UITextFieldDelegate方法手动处理文本输入:

extension YourViewController: UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        guard let currentText = textField.text else { return true }
        let updatedText = (currentText as NSString).replacingCharacters(in: range, with: string)
        
        // 强制保留三个连续点
        if updatedText.hasSuffix("...") {
            textField.text = updatedText
            return false
        }
        // 强制保留两个连续短横
        if updatedText.hasSuffix("--") {
            textField.text = updatedText
            return false
        }
        return true
    }
}

注意:需将UITextField的delegate属性绑定到当前ViewController。

内容的提问来源于stack exchange,提问作者user3555920

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:42:06