2013-02-17 3 views
2

Я пробую простой проект (раскадровку), где пользователь щелкает справа налево, чтобы перейти к следующему виду и т. Д., И чтобы вернуться к пользовательскому движению слева направо. Я хочу добиться перехода, чтобы следовать за салфеткой (L -> R или R -> L).Custom Segue push weird behavior

Я нашел это:

-(void)perform { 

    UIViewController *sourceViewController = (UIViewController*)[self sourceViewController]; 
    UIViewController *destinationController = (UIViewController*)[self destinationViewController]; 

    CATransition* transition = [CATransition animation]; 
    transition.duration = .25; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
    transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 



    [sourceViewController.navigationController.view.layer addAnimation:transition 
                   forKey:kCATransition]; 

    [sourceViewController.navigationController pushViewController:destinationController animated:NO]; 

} 

, но это, кажется, не делать то, что должен делать.

EXPLAIN:

, когда я нахожусь в пейзаже (мой проект работает только в альбомной ориентации) и домашняя кнопка находится на левой стороне, анимация происходит от TOP !!! Когда я нахожусь в пейзажной и домашней кнопке справа, анимация происходит от BOTTOM !!!

Хотя я указал, что это слева. Другое дело, что он меняет направление, когда я использую разные ландшафты (главная кнопка слева или справа).

Любые идеи, почему это происходит ???

ответ

0

ОК, как я это сделал, хотя ОЧЕНЬ не православный.

Я проверяю ориентацию iPad, а затем вместо того, чтобы идти влево или вправо im, на самом деле идущий сверху/снизу ... ok, вот как я это сделал, хотя ОЧЕНЬ не ортодоксальный.

Im проверить ориентацию IPad, а затем вместо того, чтобы идти влево или вправо, им на самом деле происходит верх/низ ...

if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft) 
{ 
     //Landscape Left 

//....... 
     transition.subtype = kCATransitionFromTop; 

} 
else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight) 
{ 
     //Landscape Right 

//...... 
     transition.subtype = kCATransitionFromBottom; 

} 
+0

Я видел, что вы его отредактировали 1 мин. Назад, и я удалил свой комментарий. Но, честно говоря, я не думаю, что ответ был случайным, так как это было 26 минут назад и не имеет никакого отношения к вашему текущему контенту ответа ... –

+0

он должен был быть комментарием, а не ответом, но Я также был в середине поиска/тестирования/расстроен с Apple и так далее, извините, если это вызвало у вас проблемы .. и спасибо за вашу помощь ... –

0

Ваши мнения в контроллере нав? Вы пробовали просто использовать segue с «толчком»?

В Размах жест распознаватель, просто позвоните:

[self performSegueWithIdentifier:@"NextScreenIdentifier" sender:sender]; 

и вы должны получить правильное поведение (лево-> вправо/право-> левый переход).

+0

да им с навигационным управлением. Я не объявляю свой распознаватель жестов в любом месте. все это в IB и раскадровке –

+0

Итак, просто перетащите указатель мыши из распознавателя жестов в режим назначения и выберите «push». Сделайте то же самое каждый из ваших распознавателей (слева и справа). Поскольку вы переходите влево/вправо, он должен «просто работать». – Dave

+0

У меня есть «толчок», чтобы двигаться вперед. НО это очень неинтуитивно, чтобы пронестись от R -> L, и представление, чтобы появиться из L -> R ... потому что это то, что вы получаете, если идете с толчком. –