如何处理当uitextview成为第一响应者。我在文本视图中有文本,我想当视图成为活动的想清除文本。我该怎么做呢?提前感谢
f87krz0w1#
您完全可以使用UITextViewDelegate方法:
UITextViewDelegate
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
只需返回YES并在该方法中截取。您也可以使用UITextFieldDelegate和以下命令对UITextFields执行此操作:
UITextFieldDelegate
UITextFields
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
zqry0prt2#
textViewShouldBeginEditing实际上在文本视图成为第一响应者之前触发。textViewDidBeginEditing将在文本视图成为第一响应者时触发,并且将是执行需要知道活动文本视图是什么的代码的最佳位置。如果您并不真正担心哪个字段是活动的,只是想在点击字段后清除文本,您可以使用任何一个功能。EDIT:相同的方法可用于文本字段。
textViewShouldBeginEditing
textViewDidBeginEditing
cyej8jka3#
如上所述,你可以重写becomeFirstResponder,但注意你必须调用超类实现,否则,在文本字段上弹出键盘之类的操作将不起作用。
override func becomeFirstResponder() -> Bool { if super.becomeFirstResponder() { // set up the control state return true } return false }
sc4hvdpw4#
Swift 4解决方案
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { return true }
pbossiut5#
前面的答案对UITextBox来说非常有用,但是如果您有一个从NSResponder派生的自定义类,并且需要知道它何时成为第一响应者:
-(BOOL) becomeFirstResponder { // Your stuff here return YES; }
5条答案
按热度按时间f87krz0w1#
您完全可以使用
UITextViewDelegate
方法:只需返回YES并在该方法中截取。您也可以使用
UITextFieldDelegate
和以下命令对UITextFields
执行此操作:zqry0prt2#
textViewShouldBeginEditing
实际上在文本视图成为第一响应者之前触发。textViewDidBeginEditing
将在文本视图成为第一响应者时触发,并且将是执行需要知道活动文本视图是什么的代码的最佳位置。如果您并不真正担心哪个字段是活动的,只是想在点击字段后清除文本,您可以使用任何一个功能。
EDIT:相同的方法可用于文本字段。
cyej8jka3#
如上所述,你可以重写becomeFirstResponder,但注意你必须调用超类实现,否则,在文本字段上弹出键盘之类的操作将不起作用。
sc4hvdpw4#
Swift 4解决方案
pbossiut5#
前面的答案对UITextBox来说非常有用,但是如果您有一个从NSResponder派生的自定义类,并且需要知道它何时成为第一响应者: