1

我创建了一个自定义按钮类,其中包含一些从 UIButton 继承的额外属性。它通过普通按钮添加到如下视图中:

EFButton *btn = [EFButton buttonWithType:UIButtonTypeRoundedRect];    
btn.frame = CGRectMake(500, 100, 100, 44);
btn.backgroundColor = [UIColor lightGrayColor];
btn.userInteractionEnabled = NO;
[self.view addSubview:btn];

UIButton *nBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];    
nBtn.frame = CGRectMake(500, 100, 100, 44);
nBtn.backgroundColor = [UIColor lightGrayColor];
nBtn.userInteractionEnabled = NO;
[self.view addSubview:nBtn];

遍历视图中的对象,例如:

  for (id view in self.view.subviews) 
{

    if ([view isKindOfClass:[EFButton class]]) 
    {
        //** dsnt come here **
        NSLog(@"EFButton Class");
        EFButton *btn = view;
    }
    if ([view isKindOfClass:[UIButton class]]) 
    {
        //** come here **
        NSLog(@"UIButton Class");
        UIButton *btn = view;
    }
}

UIButton 是有效的,但它不符合 isKindOfClass:[EFButton class] 的条件。请帮助我解决我做错了什么或需要如何做。

4

1 回答 1

5

因为buttonWithType是类的方法UIButton,它返回UIButton类型,虽然你EFButton继承UIButton了,但不能返回 EFButton 类型

引用开发者文档

If you subclass UIButton, this method does not return an instance of your subclass

PS:我不认为继承UIButton是一个好方法。

于 2013-01-28T05:09:45.787 回答