【发布时间】:2011-08-11 07:17:29
【问题描述】:
当 uitextview 成为第一响应者时如何处理。我在文本视图中有文本,我想在视图变为活动状态时清除文本。我怎样才能做到这一点?提前致谢
【问题讨论】:
标签: ios ios4 uitextview
当 uitextview 成为第一响应者时如何处理。我在文本视图中有文本,我想在视图变为活动状态时清除文本。我怎样才能做到这一点?提前致谢
【问题讨论】:
标签: ios ios4 uitextview
你绝对可以使用UITextViewDelegate的方法:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
只需返回 YES 并在该方法内拦截。您也可以使用UITextFieldDelegate 为UITextFields 执行此操作,并且:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
希望对您有所帮助。
【讨论】:
isEditable 属性已设置为 false 则不起作用
textViewShouldBeginEditing 实际上在文本视图成为第一响应者之前触发。
textViewDidBeginEditing 将在文本视图成为第一响应者时触发,并且是执行需要知道活动文本视图是什么的代码的最佳位置。
如果您并不真正担心哪个字段处于活动状态,并且只想在点击该字段后清除文本,您可以使用任一功能。
编辑:相同的方法可用于文本字段。
【讨论】:
Swift 4 解决方案
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return true
}
【讨论】:
textViewDidBeginEditing?
以前的答案对 UITextBox 来说非常有用,但是如果您有一个从 NSResponder 派生的自定义类并且需要知道它何时成为第一响应者:
-(BOOL) becomeFirstResponder
{
// Your stuff here
return YES;
}
【讨论】:
如上所述,您可以覆盖 becomeFirstResponder,但请注意您必须调用超类实现。如果您不这样做,则在文本字段上弹出键盘之类的操作将不起作用。即
override func becomeFirstResponder() -> Bool {
if super.becomeFirstResponder() {
// set up the control state
return true
}
return false
}
【讨论】: