Частичный переход 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, и вы готовы к работе!