检查UIControl子视图是否为UITextField类型

时间:2012-12-18 02:31:51

标签: objective-c

我想使用类似下面的代码来查找已添加到我的自定义视图中的UITextFields,它扩展了UIControl,然后在它们上调用resignFirstResponder来关闭键盘,但XCode编译器不允许这样做并给出消息“意外的接口名称UITextField。预期的表达式。”在这里达到我预期目标的最佳方法是什么?

@interface MyCustomView : UIControl
@end

@implementation MyCustomView

   - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
   {
        /* Dismiss the keyboard associated with any UITextFields in this view */
        for (id subview in self.subviews) {
            if ([subview isKindOfClass: UITextField] ||
                [subview isMemberOfClass: UITextField]) {
                [subview resignFirstResponder];
            }
        }
    }

@end

3 个答案:

答案 0 :(得分:2)

您需要执行以下操作才能获取UITextField类:

if ([subview isKindOfClass:[UITextField class]]

答案 1 :(得分:1)

if ([subview isKindOfClass:[UITextField class])适用于UITextField类及其子类。

if ([subview class] == [UITextField class])仅适用于UITextField类。

您可以根据需要使用其中任何一种。

答案 2 :(得分:0)

这对您来说可能更容易:

[self.view endEditing:YES];