我希望在点击文本字段时突出显示文本字段内的文本。
我希望在有人点击数字键盘时删除原始文本。我尝试使用 clearButtonMode 但由于我的文本字段大小非常小,十字图标完全占据了文本字段。
知道如何实现这一目标吗?
我希望在点击文本字段时突出显示文本字段内的文本。
我希望在有人点击数字键盘时删除原始文本。我尝试使用 clearButtonMode 但由于我的文本字段大小非常小,十字图标完全占据了文本字段。
知道如何实现这一目标吗?
这可以通过
(void)textFieldDidBeginEditing:(UITextField *)iTextField {
[iTextField selectAll:self];
}
你需要自己做亮点。你可以试试:
有很多选择...
编辑:针对您的问题,为了在文本字段中开始编辑时清除先前值的字段,您将对象设置为符合 UITextFieldDelegate 协议,并实现此方法:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
textField.text = nil;
}
在点击文本字段时突出显示文本的最简单方法是继承 UITextField,覆盖 becomeFirstResponder 并选择其中的所有文本。
如果全选:并不总是有效,这里有一个修复:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f];
}
如果您仍然希望能够在 ViewController 中使用其他委托功能,我建议您添加以下内容:
override weak var delegate: UITextFieldDelegate? {
didSet {
if delegate?.isKindOfClass(YourTextField) == false {
// Checks so YourTextField (self) doesn't set the textFieldDelegate when assigning self.delegate = self
textFieldDelegate = delegate
delegate = self
}
}
}
// This delegate will actually be your public delegate to the view controller which will be called in your overwritten functions
private weak var textFieldDelegate: UITextFieldDelegate?
class YourTextField: UITextField, UITextFieldDelegate {
init(){
super.init(frame: CGRectZero)
self.delegate = self
}
func textFieldDidBeginEditing(textField: UITextField) {
textField.performSelector(Selector("selectAll:"), withObject: textField)
textFieldDelegate?.textFieldDidBeginEditing?(textField)
}
}
这样,您的视图控制器不需要知道您已经覆盖了委托,并且您可以在视图控制器中实现 UITextFieldDelegate 函数。
let yourTextField = YourTextField()
yourTextField.delegate = self