我试图找到当键盘上升时我移动视图时哪个文本字段处于活动状态.我正在尝试从scrollview的子视图中设置我的viewcontroller中的属性.
这是我用来在scrollview中显示视图的代码
-(void)displayView:(UIViewController *)viewController{
[[viewFrame subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[viewFrame scrollRectToVisible:CGRectMake(0, 0, 1, 1)
animated:NO];
[viewFrame addSubview: viewController.view];
_currentViewController = viewController;
}
Run Code Online (Sandbox Code Playgroud)
- 编辑 -
我改变了对这个问题的思考方式.对不起,我发布时问题含糊不清.我当时筋疲力尽,脑子里有意义.
一个不同但相似的问题:UITextArea和UITextView的公共子类是否会给我firstResponder的起源?或者,在找到原点之前,还需要检查firstResponder的类吗?
Xil*_*xio 36
您需要搜索已成为第一响应者的对象.第一响应者对象是使用键盘的对象(实际上,他是一个具有用户输入焦点的对象).要检查哪个文本字段使用键盘,请迭代文本字段(或仅覆盖所有子视图)并使用该isFirstResponder
方法.
编辑:根据要求,示例代码,假设所有文本字段是视图控制器视图的子视图:
for (UIView *view in self.view.subviews) {
if (view.isFirstResponder) {
[self doSomethingCleverWithView:view];
}
}
Run Code Online (Sandbox Code Playgroud)
Sta*_*ida 26
我做了一个扩展.
public extension UIResponder {
private struct Static {
static weak var responder: UIResponder?
}
public static func currentFirst() -> UIResponder? {
Static.responder = nil
UIApplication.shared.sendAction(#selector(UIResponder._trap), to: nil, from: nil, for: nil)
return Static.responder
}
@objc private func _trap() {
Static.responder = self
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
if let activeTextField = UIResponder.currentFirst() as? UITextField {
// ...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23329 次 |
最近记录: |