UIButton innerhalb einer UIView funktioniert nicht nach UIView animiert
Habe ich gesehen, dass viele Fragen in diesem forum welche gibt die Antwort zu diesem Thema "UIButton innerhalb einer UIView, wenn animierte funktioniert nicht", aber nachdem Sie versucht, sich die Antworten wie
a) UIViewAnimationOptionAllowUserInteraction to the options
b) subView.setUserInteractionEnabled = YES
c) [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
keiner von Ihnen arbeitet für mich 🙁
Hier ist das Szenario. App im landscape-Modus und eine UIView genannt menuView auf x=480,y=0. Ihrer height=200 und width=150. Also, wenn ich Tippen Sie auf die Schaltfläche in der oberen rechten Ecke, wird der folgende code ausgeführt
- (IBAction)showMenu {
[menuView setUserInteractionEnabled:YES];
[optionsButton setUserInteractionEnabled:YES];
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationCurveEaseOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
self.view.frame = CGRectOffset(self.view.frame, 0, 200);
}
completion:NULL];
}
Ausgang?: Anzeigen erscheinen, aber optionsButton innerhalb der menuView ist nicht anklickbar. Ich hakte bis zu einem Ereignis", hat ein NSLog(@"Optionen-button angeklickt"), aber es passiert nichts 🙁
Mir bitte sagen, was ich falsch mache?
Update:, Wenn ich die Untersicht, die "menuView" im inneren des selbst.Ansicht, dann auf ausführen und klicken Sie auf den optionsButton, bekomme ich die NSLog-Nachricht. Nur wenn ich den Ursprung festzulegen.x menuView werden 480 und oben, es funktioniert nicht.
die bisher nicht angeschlossen an eine Steckdose? Wenn Sie sprechen über die Taste oder anzuzeigen, hakte ich habe bot bis zu einer Steckdose in meinem .h-Datei @ property (weak, nonatomic) IBOutlet UIView *menuView; @ property (weak, nonatomic) IBOutlet UIButton *optionsButton;
Einen Haltepunkt setzen und sicher sein, dann.
können Sie versuchen zu bringen die Schaltfläche, um nach vorne
self.view.frame = CGRectOffset(self.view.frame, 0, 200);
und lass mich das Ergebnis wissenIch Tat dies, und es funktioniert nicht [selbst.view bringSubviewToFront:optionsButton];
InformationsquelleAutor thandasoru | 2013-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie sehen können, die UIButton, seine userInteractionEnabled (JA standardmäßig!) festgelegt ist, und dessen superview ist userInteractionEnabled in der ganzen Hierarchie ist JA - Sie sollten in der Lage sein, mit ihm zu interagieren.
Einer animation wird nie ändern Sie Ihre userInteractionEnabled Eigentum! Also, was Sie tun, es ist einfach unnötig. Wenn Sie versuchen, aktivieren Sie die Interaktion während animation - das ist eine andere Geschichte und ist nur eine option übergeben, um die animation-Nachricht.
Also wenn das nicht dein problem (und wahrscheinlich nicht), dann denke ich, dass eine der superview - frame zuschneiden die UIButton!
Nun, sehen Sie, wenn ein UIButton (oder jede UIView) außerhalb eines UIView's frame, kann es immer noch sichtbar, es sei denn clipsToBounds auf der superview.
Wird, und das Ergebnis dieser situation ist: Sie können mich sehen, aber Sie können nicht berühren mich.
Wenn ich die menuView innerhalb meiner selbst.anzeigen und ausführen der app, es funktioniert. Nur wenn ich menuView außerhalb und versuchen, den offset selbst.Blick.Rahmen von 200, dann funktioniert es nicht. Ich denke, dass es vielleicht aufgrund der Tatsache, dass die menuView ist nicht in sich selbst.Blick. also, wenn ich vergrößern Sie die Breite selbst.anzeigen, zur Aufnahme der menuView, dann sollte es funktionieren, richtig?
Wenn Sie platzieren menuView "außen" des selbst.anzeigen - dann wo ist es genau? Können Sie beschreiben die Hierarchie der Ansichten genau?
selbst.Ansicht der Landschaft. Es ist Breite 480, Höhe 300. menuView Herkunft.x 480 und eine Breite von 200. Es gibt einen Knopf auf sich selbst.anzeigen bei x=427. also berühre ich die Taste selbst.Blick nach Links durch die Breite menuView. Habe ich korrekt beschrieben?
Ja, es macht Sinn. Ich kann nicht sagen, ob menuView ist die Untersicht des selbst.anzeigen oder nicht, und was sind die genauen Maßnahmen, aber NSLogging die Ansichten themeselves, zusammen mit Ihren Untersichten array und superview-Eigenschaft, können das vollständige Bild. Trotzdem - Sie sehen, dass die einzige (einfache) Erklärung dafür, ist, was funktioniert. Ihre UIButton war out of bounds. Ich kann nicht sagen, aus welcher Sicht die Grenzen, aber trotzdem 🙂
InformationsquelleAutor daniel.gindi
In meinem Fall fehlt, ist eine Beschränkung auf die Höhe des enthaltenden Ansicht, dass die Anzeige der Höhe auf 0 sein. Knöpfe sichtbar, unterhalb der Ansicht, aber unantastbar.
InformationsquelleAutor Dan Loughney
War es für mich alles über einen übersehenen Fehler in der animation-code selbst. Wo meine neue Höhe aufgerufen wurde, war ich eigentlich anrufen meine neue Breite, und wo meine neue Breite aufgerufen wurde, war ich eigentlich anrufen meine neue Höhe, dafür verursacht die UIView super lange noch super schmal, so schieben alle Inhalte in der Mitte der Ansicht, außerhalb der Sicht zu erreichen.
Ändern Sie Ihre UIViews hintergrund-Farbe auf Rot, so dass Sie tatsächlich sehen, wo es belebt ist.
Wenn Ihr UIView ist, die innerhalb einer anderen anzeigen, schalten
clipSubviews
so dass Sie nur sehen, was tatsächlich aktiviert innerhalb dersubView
.Führen Sie Ihr Projekt.
Wenn Ihr UIView ist, nicht seine normale Höhe und Breite, mehr als wahrscheinlich, Sie haben ein paar übersehen-code in Ihre animation nennen.
Stellen Sie sicher, dass Ihre
x, y, width, height
gezeigt werden, die richtigen Bestellungen innerhalb der animation code.InformationsquelleAutor Felecia Genet
In meinem Fall, es scheint, wie meine animierten übergang ist noch nicht abgeschlossen. Ich habe vergessen zu setzen
completeTransition:Bool
am Ende meineranimateTransition:context
Methode.InformationsquelleAutor John Paul Manoza