Frage

Ich schreibe eine Anwendung, wo der Benutzer ein paar Sachen auf dem Bildschirm zu bewegen hat seine Finger verwenden und sie fallen. Um dies zu tun, ich bin mit der touchesBegan, touchesEnded ... Funktion jeder Ansicht, die bewegt werden muss.

Das Problem ist, dass manchmal die Ansichten durch einen Blick erfasst werden angezeigt mit dem [UIViewController PresentModalViewController] Funktion. Sobald das geschieht, die UIView, dass ich Anschläge bewegte die Berührungsereignisse empfangen, da es bis bedeckt war. Aber es gibt keinen Fall, mir zu sagen, dass es gestoppt, die Ereignisse empfangen, so dass ich den Zustand der verschobene Ansicht zurücksetzen.

Im Folgenden ist ein Beispiel, das zeigt. Die Funktionen sind Teil eines UIView, die im Hauptfenster angezeigt wird. Es hört Ereignisse zu berühren, und wenn ich mit dem Finger eine Strecke weit ziehen, stellt sie eine modale Ansicht, dass Abdeckungen alles. Im Run Log, druckt er was Berührungsereignisse empfangen werden.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesBegan");

  touchStart=[[touches anyObject] locationInView:self];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  CGPoint touchAt=[[touches anyObject] locationInView:self];
  float xx=(touchAt.x-touchStart.x)*(touchAt.x-touchStart.x);
  float yy=(touchAt.y-touchStart.y)*(touchAt.y-touchStart.y);
  float rr=xx+yy;

  NSLog(@"touchesMoved %f",rr);
  if(rr > 100) {
    NSLog(@"Show modal");
    [viewController presentModalViewController:[UIViewController new] animated:NO];
  }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesEnded");
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesCancelled");
}

Aber wenn ich die Anwendung testen und den modalen Dialog auslösen angezeigt werden, die folgende ist die Ausgabe im Run-Log.

  

[Session begann am 2010-03-27   16.17.14 -0700.] 2010-03-27   16: 17: 18,831   modelTouchCancel [2594: 207]   touchesBegan 2010-03-27 16: 17: 19,485   modelTouchCancel [2594: 207]   touchesMoved 2.000000 2010-03-27   16: 17: 19,504   modelTouchCancel [2594: 207]   touchesMoved 4.000000 2010-03-27   16: 17: 19,523   modelTouchCancel [2594: 207]   touchesMoved 16.000000 2010-03-27   16: 17: 19,538   modelTouchCancel [2594: 207]   touchesMoved 26.000000 2010-03-27   16: 17: 19,596   modelTouchCancel [2594: 207]   touchesMoved 68.000000 2010-03-27   16: 17: 19,624   modelTouchCancel [2594: 207]   touchesMoved 85.000000 2010-03-27   16: 17: 19,640   modelTouchCancel [2594: 207]   touchesMoved 125.000000 2010-03-27   16: 17: 19,641   modelTouchCancel [2594: 207] anzeigen modal

Alle Vorschläge, wie der Zustand eines UIView zurückgesetzt werden, wenn seine Berührungsereignisse durch eine modale Ansicht unterbrochen werden?

War es hilfreich?

Lösung

Wenn Sie steuern, wenn die modale Ansicht angezeigt wird, können Sie auch eine Benachrichtigung zur gleichen Zeit senden Sie den Rest Ihrer App zu sagen, dass sie die verschobene Ansicht zurückgedreht werden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top