UIView transitionFromView: toView: animation не работает.

Это мой первый пост о stackoverflow. Я новичок в iOS-разработчике и не владею английским языком, поэтому постараюсь объяснить свою проблему.

Вероятно. lem:

Я добавил два представления в свое окно AppDelegate и хочу переключаться с одного на другое, используя:

 UIView transitionFromView:toView:

Первое представление (MainScreenView) имеет свой собственный ViewController . В файле .xib MainScreenView у меня есть кнопка с действием, которое вызывает метод goShow, реализованный в моем AppDelegate. В этом методе я использую UIView transitionFromView: toView: для перехода ко второму представлению. Пока все работает нормально.Мое второе представление (scrollview) объявлено программно в моем AppDelegate и содержит множество изображений внутри (picturesViewController), а поверх них - UIPinchGestureRecognizer .

Я использую распознаватель жестов, чтобы вернуться в свой MainScreenView. Вот где проблема. Когда я щелкаю пальцем по экрану прокрутки, сразу перед анимацией появляется MainScreenView.view , поэтому анимация переворота выглядит неправильно.

Я использую следующий код:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

mainScreen = [[MainScreenViewController alloc] initWithNibName:@"MainScreenViewController" bundle: [NSBundle mainBundle]];

CGRect frame = self.window.bounds;
int pageCount = 10;
scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.contentSize = CGSizeMake(320*pageCount, 480);
scrollView.pagingEnabled = YES;
scrollView.showsHorizontalScrollIndicator = FALSE;
scrollView.showsVerticalScrollIndicator = FALSE;
scrollView.delegate = self;

[...] 'While' adding pictures to de scrollView

UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(goBackToMain)] autorelease];
[scrollView addGestureRecognizer:twoFingerPinch];

[self.window addSubview: scrollView];
[scrollView setHidden:TRUE];
[self.window addSubview: mainScreen.view];

[self.window makeKeyAndVisible];
return YES;
}

-(void) goShow{

[UIView transitionFromView:mainScreen.view
                    toView:scrollView 
                  duration:0.5
                   options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews                    
                completion:NULL];

[UIView commitAnimations];    
}

-(void) goBackToMain {

[UIView transitionFromView:scrollView
                    toView:mainScreen.view 
                  duration:0.5
                   options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews                     
                completion:NULL]; 

[UIView commitAnimations];
}

Я использую представления «показать / скрыть» вместо addSubview / removeFromSuperView , потому что я пробовал добавлять и удалять и получил сбой приложения в жесте сжатия, точно на том же этапе, на котором не работает анимация. Возможно, это та же ошибка, но я не могу найти ее причину. Любая помощь будет оценена по достоинству.

Спасибо.

Хорошо. С помощью Адриана вот код UIPinchGesture, решивший мою проблему:

[...]

UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(goBackToMain:)] autorelease];
[scrollView addGestureRecognizer:twoFingerPinch];


-(void)goBackToMain:(UIPinchGestureRecognizer *)recognizer {

if (recognizer.state == UIGestureRecognizerStateEnded)
{
    [UIView transitionFromView:scrollView
                        toView:mainScreen.view 
                      duration:0.4
                       options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews                     
                    completion:nil]; 

    [UIView commitAnimations];
}
6
задан Irfan 5 April 2014 в 19:22
поделиться