Ich habe eine benutzerdefinierte Schaltflächenklasse mit einigen zusätzlichen Eigenschaften erstellt, die von UIButton erbt. Sie wird in einer Ansicht wie der folgenden mit einer normalen Schaltfläche hinzugefügt:
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];
Durchlaufen Sie die Objekte in der Ansicht wie folgt:
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 funktioniert, ist jedoch nicht in der Bedingung isKindOfClass: [EFButton-Klasse] enthalten. Bitte helfen Sie mir, was ich falsch mache oder wie es gemacht werden muss.
Antworten:
5 für die Antwort № 1Es ist weil buttonWithType
ist eine Klassenmethode von UIButton
, es kehrt zurück UIButton
Typ, obwohl Ihr EFButton
erbt UIButton
kann es nicht zurückkehren EFButton
Art
Zitiere den Entwickler Unterlagen
If you subclass UIButton, this method does not return an instance of your subclass
PS: Ich denke nicht, erben UIButton
ist ein guter Weg.