IBAction & Tasten programmgesteuert
Ich bin programmgesteuert erstellen von Schaltflächen und dann möchte ich hinzufügen-Funktionalität, wobei, wenn Sie getippt/gedrückt haben, bleiben Sie markiert, es sei denn, klopfte es erneut. Was ich jetzt mache, ist das erstellen der buttons und dann zu versuchen, fügen Sie eine IBAction. Aber das Problem ist, ich habe meine button-Erstellung in einer Methode und dann bin ich nicht sicher, wie Sie Sie zum verweisen auf den button in meiner IBAction. Hier ist mein code:
UIButton* testButn = [UIButton buttonWithType:UIButtonTypeCustom];
[testButn setFrame:CGRectMake(0, 135, 40, 38)];
[testButn setImage:[UIImage imageNamed:@"test_butn_un.png"] forState:UIControlStateNormal];
[testButn setImage:[UIImage imageNamed:@"test_butn_pressed.png"] forState:UIControlStateHighlighted];
[testButn addTarget:self action:@selector(staypressed:) forControlEvents:UIControlEventTouchUpInside];
[self.contentview addSubview:testButn
-(IBAction)staypressed:(id)sender{
//Not sure what to do here, since this method doesn't recognize testButn, How do I reference testButn
UIButton theButton = (UIButton)sender; theButton.selected = true; .ausgewählt können deaktivieren Sie die Schaltfläche so einfach, den Stil zu ändern.
Funktioniert immer noch nicht. Dies ist, was ich jetzt haben: -(IBAction)stayPressed:(id)sender{ UIButton *testButn =(UIButton *)sender; [testButn setHighlighted:YES]; }
Funktioniert immer noch nicht. Dies ist, was ich jetzt haben: -(IBAction)stayPressed:(id)sender{ UIButton *testButn =(UIButton *)sender; [testButn setHighlighted:YES]; }
InformationsquelleAutor David West | 2013-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Absender testButn. Sollten Sie stayPressed s argument-Typ aus (id) zu (UIButton *)
Es sei denn, einer action-Methode verbunden ist, um verschiedenen Klassen von Objekten, ist es am besten ersetzen Sie die id, mit was auch immer Objekt der Klasse, die Sie verwenden. Dies kann nützlich sein, wenn Sie Haken Dinge in IB, da es nicht lassen Sie es Haken, um die falsche Art von Objekt.
Die Tatsache, dass es nicht funktioniert nicht, weil Sie nicht erkennen, Ihre-Taste. Dein Ansatz ist falsch. Ich glaube, Sie brauchen, um eine Aktion verbunden, touch down, und vielleicht legen Sie den ausgewählten Status auf JA. In deinem button-definition, die Sie benötigen, um ein imageForState: für den ausgewählten Zustand. Die Art und Weise, tun Sie es jetzt, dass die Methode nicht aufgerufen, bis touch-up.
Etwas wie dieses:
siehe mein edit
wenn Sie sehen, mein original-code, ich habe ein Bild für UIControlStateHighlighted. Meine Aktion verbunden ist, um touchupinside. Wenn ich Tippen Sie auf die Schaltfläche es wird hervorgehoben, aber es nicht bleiben hervorgehoben.
Sie müssen den ausgewählten Zustand, nicht markiert. Siehe mein edit. Durch die Verwendung von touchDown, ich kann es immer noch verbinden Sie die-Taste, um eine andere Aktion auf touch up inside.
Danke, ja mein Problem war mit hervorgehobenen Zustand anstelle ausgewählt.
InformationsquelleAutor rdelmar
Müssen Sie die cast-sender zu UIButton.
ok, aber was funktioniert nicht? Ist die Funktion ausgeführt wird? oder Sie bekommen eine Fehlermeldung?
InformationsquelleAutor Fogmeister
InformationsquelleAutor Yildizoglu