如何设置 UIView 成为第一响应者?
How to set the UIView become first Responder?
我正在学习UIResponder
。我写了一些测试代码。在我的代码中,我想让 UIView
成为第一响应者,但我失败了。我的测试步骤是:
- 在故事板中创建
UIView
。
为此视图创建了一个 class 扩展 UIView
,并将方法 canBecomeFirstResponder:
和 becomeFirstResponder
重写为 return YES
.
在视图控制器的viewDidAppear:
方法的方法中,测试一下:
- (void) viewDidAppear:(BOOL)animated {
[self.viewD becomeFirstResponder];
NSLog(@"%d ", [self.viewD isFirstResponder]);
}
isFirstResponder
的结果总是 NO
。
我不知道为什么。有谁能够帮助我?谢谢。
becomeFirstResponder Notifies the receiver that it is about to become first responder in its window.
YES if the receiver accepts first-responder status or NO if it refuses this status. The default implementation returns YES, accepting first responder status.
A responder object only becomes the first responder if the current responder can resign first-responder status (canResignFirstResponder) and the new responder can become first responder.
在你的情况下,你的视图拒绝状态,这就是为什么它每次都不是。
所以在你的重写中确保你调用 super
还有
您可以尝试确保视图在前面并且可见
您可以尝试结束对当前父视图的编辑
在调用 becomeFirstResponder 之前
[self.view bringSubviewToFront:self.D];
[self.view endEditing:true];
[self.D becomeFirstResponder];
还有你不在 ViewDidAppear 中调用 super 的原因吗?
我正在学习UIResponder
。我写了一些测试代码。在我的代码中,我想让 UIView
成为第一响应者,但我失败了。我的测试步骤是:
- 在故事板中创建
UIView
。 为此视图创建了一个 class 扩展
UIView
,并将方法canBecomeFirstResponder:
和becomeFirstResponder
重写为 returnYES
.在视图控制器的
viewDidAppear:
方法的方法中,测试一下:- (void) viewDidAppear:(BOOL)animated { [self.viewD becomeFirstResponder]; NSLog(@"%d ", [self.viewD isFirstResponder]); }
isFirstResponder
的结果总是 NO
。
我不知道为什么。有谁能够帮助我?谢谢。
becomeFirstResponder Notifies the receiver that it is about to become first responder in its window. YES if the receiver accepts first-responder status or NO if it refuses this status. The default implementation returns YES, accepting first responder status.
A responder object only becomes the first responder if the current responder can resign first-responder status (canResignFirstResponder) and the new responder can become first responder.
在你的情况下,你的视图拒绝状态,这就是为什么它每次都不是。
所以在你的重写中确保你调用 super
还有 您可以尝试确保视图在前面并且可见 您可以尝试结束对当前父视图的编辑 在调用 becomeFirstResponder 之前
[self.view bringSubviewToFront:self.D];
[self.view endEditing:true];
[self.D becomeFirstResponder];
还有你不在 ViewDidAppear 中调用 super 的原因吗?