UIButton mit benutzerdefinierten Ansicht - addTarget:action:forControlEvents: funktioniert nicht
Mein button ist wie folgt
- Erstellt label1
- Erstellt label2
- Erstellt customView (
UIView
) - Hinzugefügt label1 und label2 auf benutzerdefinierte Ansicht
- Erstellt myCustomButton(
UIButton
) - Hinzugefügt customView auf myCustomButton
Habe ich bereits getan, userInteractionEnable für custom_View, label1 und label2.
Dann Hinzugefügt
[myCustomButton addTarget:self action:@selector(OnButtonClick:) forControlEvents:UIControlEventTouchUpInside];
Und
-(void)OnButtonClick:(UIButton *)sender
{
}
Aber obige Funktion wird nie aufgerufen, auch, wenn ich Tippen Sie auf die Schaltfläche. Jede Lösung?
- Setzen Sie bitte Ihre relevanten code hier ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur ein kleines problem mit dem code mein Freund, die Sie gerade brauchen, um hinzuzufügen, nur man folgende Zeile in den code vergessen
setUserInteractionEnabled:NO
zuUIView
es wird Ihnen erlauben, klicken Sie auf die SchaltflächeKlicken Sie Auf Methode
setUserInteractionEnabled
sollte KEINE? Ich Stelle es auf ja, dann hat es geklappt!self.view
und Etiketten sind inview
, das ist, warum, wenn Sie deaktivieren Sie die Interaktion der Nutzer von it. es macht keinen Unterschied, wie button & Etiketten sind in verschiedenen container.Anstatt die customView (eine Instanz von UIView) , fügen Sie customView als eine Instanz von UIControl als auch addTarget der customView ,
Nun in der CustomViewClicked Methode
Hoffe es wird Euch helfen.
Swift 4.2 Lösung
Dies ist die Lösung des Problems (aufgrund der vorherigen Antworten) mit der letzten version von Swift:
Hinweise: Deaktivieren der Benutzer-Interaktion von der
customView
ist auf jeden Fall notwendig, da es auf die Oberseite Hinzugefügt und schließlich stören die tap-Geste, die wir fangen wollen.Sehen Sie diese deutlich mehr, benutzen Sie einfach den "Debug View-Hierarchie" beim Debuggen: