我想基本上禁用 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
}
但它仍然允许说话、拼写和自动填充其内容。看下面的截图:
此外,我想防止用户在那里使用光标。因此,符号删除和输入以相同的顺序完成(例如,如果我输入 1234,我无法删除 3 或 2 使其变为 14)。
你能帮我看看该怎么做吗?
解决方案可以将
UIButton
放在 UITextField
之上以阻止交互。因此,当用户点击按钮时,我们要做的就是让UITextField
成为第一响应者
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()
}
}