禁用 UITextField 的自动填充、朗读和拼写功能

问题描述 投票:0回答:1

我想基本上禁用 UITextField 中包含文本的任何操作。这也意味着用户无法说出、拼写或自动填充内容。这是我用于自定义 UITextField 的代码:

class GradientTextField: UITextField {
    var actionEnabled: Bool = true
...
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if actionEnabled {
            return super.canPerformAction(action, withSender: sender)
        } else {
            return false
        }
    }
    
    override func selectionRects(for range: UITextRange) -> [UITextSelectionRect] {
        return []
    }
    
    override func caretRect(for position: UITextPosition) -> CGRect {
        return .zero
    }

但它仍然允许说话、拼写和自动填充其内容。看下面的截图:

UITextFieldScreenshot

此外,我想防止用户在那里使用光标。因此,符号删除和输入以相同的顺序完成(例如,如果我输入 1234,我无法删除 3 或 2 使其变为 14)。

你能帮我看看该怎么做吗?

ios swift uikit uitextfield
1个回答
0
投票

解决方案可以将

UIButton
放在
UITextField
之上以阻止交互。因此,当用户点击按钮时,我们要做的就是让
UITextField
成为第一响应者

enter image description here

class DisableTextField: UIViewController {

    @IBOutlet weak var textfield: UITextField!
    @IBOutlet weak var button: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }


    @IBAction func onTap(_ sender: Any) {
        textfield.becomeFirstResponder()
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.