Hinzufügen eines UITapGestureRecognizer zu einer Ansicht, dann entfernen scheint, um Kurzschluss Taste-events
In den folgenden code bin ich aufspringen eine Bildansicht als das Ergebnis einer Benutzer touchUpInside auf eine einfache info-button. Es gibt auch andere Tasten auf der Ansicht.
Entlassen die info, die ich Hinzugefügt ein UITapGestureRecognizer zu meinem Controller anzeigen und ausblenden der anzeigen wenn der Stick erkannt wird.
Wenn ich nicht entfernen Sie die tapGestureRecognizer, wird die Aktion aufgerufen wird jedes mal einige.
Selbst wenn ich tun, entfernen Sie die Geste-Aktion, keine Knöpfe erhalten touchUpInside Ereignisse, sobald diese gestik-Erkennung Hinzugefügt. Warum?
Code von meinem MainViewController
- (void) dismissInfo: (UITapGestureRecognizer *)gesture {
[kInfoView setHidden: YES];
[gesture removeTarget: self action: NULL];
}
- (IBAction) displayInfo {
CGRect startFrame = CGRectMake(725, 25, 0, 0), origFrame;
CGFloat yCenter = [kInfoView frame].size.height/2 + 200;
CGPoint startCenter = CGPointMake(724, 25), displayCenter = CGPointMake(384, yCenter);
UITapGestureRecognizer *g = [[UITapGestureRecognizer alloc] initWithTarget: self
action: @selector(dismissInfo:)];
[self.view addGestureRecognizer: g];
origFrame = [kInfoView frame];
[kInfoView setCenter: startCenter];
[kInfoView setHidden: NO];
[kInfoView setFrame: startFrame];
[UIView beginAnimations: @"info" context: nil];
[UIView setAnimationDuration: .5];
[UIView setAnimationDelegate: self];
[kInfoView setFrame: origFrame];
[kInfoView setCenter: displayCenter];
[UIView commitAnimations];
}
InformationsquelleAutor purplehey | 2010-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich könnte das Bild eine mögliche Lösung:
Statt versteckt die Ansicht Sie können es von superview (und das hinzufügen es wieder, wenn Sie es brauchen). Ich denke, in diesem Fall die GestureRecognizer ist nicht mehr aktiv.
InformationsquelleAutor Lars Petersen
Den Weg Ihrer Beseitigung, die gestik-Erkennung entfernt alle gesture recognizers aus Ihrer Klasse. Nicht nur diejenigen, die Sie einrichten, aber die, die Einrichtung in "super".
Dies ist, warum Sie immer keine touchUpInside Ereignisse nach dem entfernen der gesture recognizer diese Weise.
Von dem, was Sie geschrieben haben, ich glaube, es gibt eine einfachere Möglichkeit als die Verwendung der UITapGestureRecognizer, aber ich kann nicht sicher sein, ohne ein wenig mehr Informationen über das, was Sie versuchen zu erreichen.
InformationsquelleAutor DBD