我想点击文本字段内的文字时会突出显示。
我希望有人点击数字键盘时删除原始文本。我尝试使用clearButtonMode但是由于我的文本字段大小非常小,所以十字图标完全占据了文本字段。
知道如何实现这个目标吗?
答案 0 :(得分:6)
这可以通过
来实现(void)textFieldDidBeginEditing:(UITextField *)iTextField {
[iTextField selectAll:self];
}
答案 1 :(得分:1)
你需要自己做突出显示。你可以尝试:
有很多选择......
编辑:为了回答您的问题,为了在文本字段中开始编辑时清除前一个值的字段,您需要将对象设置为符合UITextFieldDelegate协议,并实现此方法:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
textField.text = nil;
}
答案 2 :(得分:1)
在点击文本字段时突出显示文本的最简单方法是简单地将UITextField子类化,覆盖becomeFirstResponder并选择其中的所有文本。
答案 3 :(得分:0)
如果选择全部:并不总是在这里修复:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f];
}
答案 4 :(得分:0)
如果您仍希望能够在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