获得UIView类型

Pet*_*ese 4 iphone cocoa-touch objective-c

我一直看到手动迭代UIView中某种类型的所有子视图的示例.例如,如果您希望键盘外部的单击以关闭键盘而不管哪个字段处于活动状态,您可能:

-(IBAction)backgroundClick:(id)sender
{
    [myTextField resignFirstResponder];
    [myOtherTextField resignFirstResponder];
    // ... repeat for each of my zillion text fields.
}
Run Code Online (Sandbox Code Playgroud)

而不是像:

for(UIView *v in self.view.subviews)
    if(v.hasKeyboard) // or something like java's instanceof
        [v resignFirstResponder];
Run Code Online (Sandbox Code Playgroud)

虽然对键盘的特定情况的改进(例如现在发现哪一个是第一响应者)是值得赞赏的,但我对一般情况更感兴趣.

Gub*_*ubb 6

你不能做类似的事吗

if([v isMemberOfClass:[UITextField class]]){
[v resignFirstResponder];
}

  • 谢谢!我可以在几个地方使用它!对于文本字段编辑的具体情况,我最终还发现你可以[self.view endEditing:YES]而不是迭代. (2认同)