Ios 禁止用户在文本字段内选择或移动光标

Ios 禁止用户在文本字段内选择或移动光标,ios,swift,uitextfield,Ios,Swift,Uitextfield,我正在创建一个电话号码格式化程序,为了不破坏我的后台格式化逻辑,我希望用户能够只键入号码和删除(数字键盘),而不通过触摸整个UITextfield.text。这也将阻止用户粘贴文本,这也是我想要阻止的。因此,简而言之,我希望用户填写电话号码,如果他/她需要更正单个字符,他/她应该删除该字符后的所有号码,以便能够删除错误的号码 因此,文本应可编辑但不可选择(且光标不可移动) 我猜这可能是这个方法内部的东西 func textField(_ textField: UITextField, shoul

我正在创建一个电话号码格式化程序,为了不破坏我的后台格式化逻辑,我希望用户能够只键入号码和删除(数字键盘),而不通过触摸整个
UITextfield.text
。这也将阻止用户粘贴文本,这也是我想要阻止的。因此,简而言之,我希望用户填写电话号码,如果他/她需要更正单个字符,他/她应该删除该字符后的所有号码,以便能够删除错误的号码

因此,文本应可编辑但不可选择(且光标不可移动)

我猜这可能是这个方法内部的东西

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool

防止用户在文本字段中输入介于文本之间的任何内容

extension ViewController : UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if range.location + range.length < (textField.text?.characters.count)! {
            return false
        }
        else {
            return true
        }
    }
}

防止用户在文本字段中输入介于文本之间的任何内容

extension ViewController : UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if range.location + range.length < (textField.text?.characters.count)! {
            return false
        }
        else {
            return true
        }
    }
}

可能是,您可以创建一个子类并禁用以下操作:

class MyTextField: UITextField{
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return false
    }
}

可能是,您可以创建一个子类并禁用以下操作:

class MyTextField: UITextField{
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return false
    }
}

这似乎是创造糟糕用户体验的完美方式……你所说的“背景格式”是什么意思?如果您的文本字段格式无法处理用户移动光标或删除或粘贴文本,则说明您做得不对。让用户体验更好,而不是让你的工作更轻松。这似乎是创造糟糕用户体验的完美方式……你所说的“背景格式”是什么意思?如果您的文本字段格式无法处理用户移动光标或删除或粘贴文本,则说明您做得不对。让用户体验更好,而不是让你的工作更轻松。@downvoter:想解释一下吗?留下一个你为什么投反对票的理由?桑德普,不要仅仅因为你唱衰就投反对票!我对你的答案投了赞成票,以反驳那些不明白mvp应该是什么样的人投的反对票。@rgoncalv:非常感谢,伙计:)我希望你能设法解决这个问题。Happy Codeing:)投票支持你的问题,因为我发现它在技术上完全可行question@rgoncalv我很高兴能帮上忙我很高兴coding@SandeepBhandari你能看到这里有什么错误吗
(textField.text?.characters.count)?@downvoter:想解释一下吗?留下一个你为什么投反对票的理由?桑德普,不要仅仅因为你唱衰就投反对票!我对你的答案投了赞成票,以反驳那些不明白mvp应该是什么样的人投的反对票。@rgoncalv:非常感谢,伙计:)我希望你能设法解决这个问题。Happy Codeing:)投票支持你的问题,因为我发现它在技术上完全可行question@rgoncalv我很高兴能帮上忙我很高兴coding@SandeepBhandari你能看到这里有什么错误吗
(textField.text?.characters.count)