UISegmentedControl gewähltes Segment

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UISegmentedControl gewähltes Segment

    Hallo, liebe Leute!


    Ich habe gerade folgendes Problem mit UISegmentedControl:
    Wenn der User das Segment klickt, das schon aktiv ist, möchte ich eine Funktion aufrufen.
    UIControlEventValueChanged wird ja (ist ja klar) nur aufgerufen, wenn sich was ändert.



    Bei stackoverflow habe ich folgendes gefunden
    You can use a subclass to get the behavior you want. Make a subclass of UISegmentedControl that has one BOOL ivar:
    BOOL _actionSent;

    Then, in the implementation, override the following two methods:
    - (void)sendAction: (SEL)action to: (id)target forEvent: (UIEvent *)event {
    [super sendAction:action to:target forEvent:event];
    _actionSent = TRUE;
    }

    - (void) setSelectedSegmentIndex: (NSInteger)toValue {
    _actionSent = FALSE;

    [super setSelectedSegmentIndex:toValue];

    if (!_actionSent) {
    [self sendActionsForControlEvents:UIControlEventValueChanged];
    _actionSent = TRUE;
    }
    }




    Funktioniert nur leider nicht.
    Wenn ich das mache, wird beim Laden der App die setSelectedSegmentIndex aufgerufen und dann passiert nichts mehr, egal, wie wild ich auf den Segmenten herumflicke.




    Kennt vllt. jemand von euch eine andere Variante, oder weiß, wie ich das hinbekommen könnte?


    Vielen Dank & liebe Grüße
    Julian
  • Wenn du einfach nur möchtest, dass der User das Element wieder drücken kann, wäre der simpelste Weg es wieder zu enablen:

    Quellcode

    1. – setEnabled:forSegmentAtIndex:


    Dann würde ich die Segmentfarbe ändern, um den Zustand des zweiten gedrückt sein zu markieren.

    Wenn der User danach ein anderes Segment auswählt (UIControlEventValueChanged) die Farbe wieder zurücksetzen.


    Habs aber nicht ausprobiert und kann auch nicht sagen ob das Ergebnis optisch ansprechen rüber kommt.


  • Hallo, Yedi!
    Danke für Deine schnelle Antwort.

    Ich habe das jetzt implementiert. Viel Unterschied sehe ich noch nicht, aber das ist ja klar.
    Denn der SegmentedControl ruft ja nur die Methode valueChanged auf.

    Wie bekomme ich denn das Teil jetzt dazu, auch meine Funktion aufzurufen, wenn ich ein zweites Mal klicke?