Частичный переход Curl для модальной синхронизации в iOS 8

Я создал простое приложение с двумя VC.
Сначала я открываю второй VC с помощью кнопки. Seque "присутствует модально", а переход - "Partion Curl". Эта схема отлично работает на iOS7, но в iOS8 первый вид VC исчезает в конце анимации curl: enter image description here

Ответы

Ответ 1

У меня та же проблема. Я видел его в Xcode 6 (beta 7) + iOS 8 (бета 5). Все еще присутствует в ГМ семенах обоих.

iOS 7.1 Особенности:

Он называется "частичным завитком", а на iOS 7 он отображается как таковой (например, Partial - вы все еще можете видеть часть исходного вида в верхней части окна). На iOS 7 - когда вы нажимаете на этот частично экспонированный, "оригинальный" вид, просмотр снова возвращается в полное окно оригинала.

iOS 8 Особенности:

В сегменте НЕ не отображается ни одного оригинального показа. И любой щелчок, где угодно на окне/экране, возвращает исходный вид с помощью автоматического размотки. Если у вас есть UITextField в представлении, когда вы нажимаете на него, чтобы ввести значение... исходный вид возвращается без запуска любого из связанных методов UITextField. Никакая клавиатура не отображается, она просто разворачивается к исходному виду.

Мне кажется, что определение касания, связанное с тем, что должно быть частично отображаемым углом исходного вида, вместо этого определяется как полное окно.

Конечно, я очень новичок в программировании на iOS, поэтому мое понимание, если оно точнее, не дает мне подсказки о том, как обходиться с ним! LOL Я надеюсь, что кто-то там будет иметь знания, чтобы хотя бы предоставить полезное обходное решение.

Джим

P.S. У меня пока нет достаточных баллов для голосования или комментариев, поэтому мой ответ не является ответом.

Ответ 2

Это либо ошибка, либо (IMHO) указание от Apple, что этот ModalTransitionStyle уже устарел. Поскольку это, вероятно, последний остаток псевдоморфизма, я думаю, что безопасная ставка на то, что для этого мира это мало. Я отлаживал проблему часами в отношении непоследовательных прикосновений к модально представленному диспетчеру просмотра, используя этот переход и вытягивая мои волосы. Я переключился на другой модальный стиль перехода и POOF - все проблемы, вызванные iOS8, исчезли.

Кит

Ответ 3

У меня была такая же проблема. Прикосновение в любом месте верхней половины экрана заставило модальное закрыть (развернуть). Изменена анимация, и мир снова успокоился.

Итак, определенно ошибка в iOS8.

Ответ 4

простое решение этой проблемы.

- (void)viewDidAppear:(BOOL)animated
{

    [super viewDidAppear:animated];

    for(UIGestureRecognizer *gesture in [self.view gestureRecognizers])
    {

        if([gesture isKindOfClass:[UIGestureRecognizer class]])
        {

            [self.view removeGestureRecognizer:gesture];

        }

    }

}

Ответ 5

Вам нужно найти супервизор, содержащий UIDismissCurlUpTapGestureRecognizer, вид, в котором вы хотите отключить этот распознаватель жестов. Для exapmle в моем случае:

po self.view.superview?.superview?.superview?.gestureRecognizers

▿ Дополнительно > ▿ Некоторые: 2 элемента   - [0]:; target = < (action = handleNavigationTransition:, target = < UINavigationInteractiveTransition 0x15826e2e0 > ) →   - [1]: < UIDismissCurlUpTapGestureRecognizer: 0x15838a2c0; state = Возможно; view =; target = < (action = _handleTapToDismissModalCurl:, target =) →

Итак, я удалил этот распознаватель жестов с этой частью кода:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    if (self.view.superview?.superview?.superview != nil){
        if (self.view.superview!.superview!.superview!.gestureRecognizers != nil){
            for gestureRecognizer in self.view.superview!.superview!.superview!.gestureRecognizers!{
                if (gestureRecognizer.isKindOfClass(UITapGestureRecognizer)){
                    self.view.superview!.superview!.superview!.removeGestureRecognizer(gestureRecognizer)
                }

            }
        }
    }

}

Примечание: очень важно, что вы делаете это в viewDidAppear, потому что представление не знает о его наблюдениях ранее в цикле загрузки.

Ответ 6

Я тоже преследовал этот БУГ в течение нескольких дней! Оказывается, вы все равно можете использовать Partial Curl успешно; проблема появляется, только если установлен флажок АНИМАТЫ. Отмените проверку окна ANIMATES, и вы готовы к работе!