Note that there are some explanatory texts on larger screens.

plurals
  1. POHitting buttons while UIView is in transition, flipping in or out
    primarykey
    data
    text
    <p>My son just discovered that he could hit my view's "Done" button, which flips to the previous view, once to start the flip and one or more times as the view is in transition (flipping out). The second and next hits would trigger the same action over again, creating some interesting results, such as ending up with no views visible, but my underlying UIWindow.</p> <p>I am thinking that I should call:</p> <pre><code>[coming.view setUserInteractionEnabled: NO]; [going.view setUserInteractionEnabled: NO]; </code></pre> <p>on both the views involved in the flip transition, and then </p> <pre><code>[coming.view setUserInteractionEnabled: YES]; </code></pre> <p>on the final view after animation has ended.</p> <p>I was thinking that maybe better than this would be some way to globally disable taps while any view was in transition. What do you think? </p> <p>Here is the entire view switching code:</p> <pre><code>- (void)switchTwoViews:(UIViewController *)view1 otherView:(UIViewController *)view2 { /* This method is called to switch views. It flips the displayed view from the main view to the flipside view and vice-versa. */ UIViewController *coming = nil; UIViewController *going = nil; UIViewAnimationTransition transition; [view1.view setUserInteractionEnabled: NO]; [view2.view setUserInteractionEnabled: NO]; if (view1.view.superview == nil) { coming = view1; going = view2; transition = UIViewAnimationTransitionFlipFromLeft; } else { coming = view2; going = view1; transition = UIViewAnimationTransitionFlipFromRight; } // coming.view.frame = [UIScreen mainScreen].applicationFrame; // going.view.alpha = 1.0; //uncomment these lines if we want fading of views // coming.view.alpha = 0.0; NSArray *viewArray = [[NSArray alloc] initWithObjects:coming, going, nil]; [coming viewWillAppear:YES]; [going viewWillDisappear:YES]; [UIView beginAnimations:@"View Flip" context:viewArray]; { [UIView setAnimationDuration:1.0]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidEnd:finished:context:)]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; // coming.view.alpha = 1.0; //uncomment these lines if we want fading of views // going.view.alpha = 0.0; [UIView setAnimationTransition:transition forView:self.view cache:YES]; [self.view addSubview: coming.view]; } [UIView commitAnimations]; } - (void) animationDidEnd:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { NSArray *viewArray = context; [((UIViewController *)[viewArray objectAtIndex:1]).view removeFromSuperview]; [[viewArray objectAtIndex:1] viewDidDisappear:YES]; [[viewArray objectAtIndex:0] viewDidAppear:YES]; [[[viewArray objectAtIndex:0] view] setUserInteractionEnabled: YES]; [viewArray release]; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload