IPhone - После отклонения Модального Контроллера Представления - разрыв оставляют наверху страницы

Scrubyt использует Ruby и Hpricot, чтобы сделать хорошую и легкую веб-очистку. Я записал скребок для услуг библиотеки своего университета с помощью этого приблизительно в 30  минуты.

24
задан Brian 13 August 2009 в 16:00
поделиться

7 ответов

Оказывается, это произошло потому, что я звонил своему контроллеру modalview в текущий момент контроллер представления, но у моего контроллера представления уже был другой контроллер представления, загруженный как подпредставление. Как только я изменил его, чтобы сделать контроллер представления в подпредставлении, загрузить модальное окно, оно исчезло. Спасибо за вашу помощь.

9
ответ дан 28 November 2019 в 23:37
поделиться

У меня была такая же проблема. Мое решение заключалось в том, чтобы временно закрыть строку состояния непосредственно перед переключением представлений:

- (void) temporarilyHideStatusBar {
  [[UIApplication sharedApplication] setStatusBarHidden:YES];
  [self performSelector:@selector(showStatusBar) withObject:nil afterDelay:0];
}
- (void) showStatusBar {
  [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

// Use these by calling the hide function just before a broken view switch:
[self temporarilyHideStatusBar];
[self doViewSwitch];

// No need to call [self showStatusBar]; explicitly.

Я экспериментировал с другими решениями на основе кода, и мне больше всего нравится это решение, потому что оно работает 100% времени - только некоторые из моих решений на основе кадров работал большую часть времени - и потому, что он имеет минимальные видимые пользователем эффекты.

Я подозреваю, что это ошибка Apple, и было бы неплохо услышать от них официальное сообщение о лучшем обходном пути.

12
ответ дан 28 November 2019 в 23:37
поделиться

Хорошо, я не знаю, почему это происходит, но это случилось со мной, и я расскажу вам, как я это исправил. Я обнаружил, что добавление представления в 0,0 привело к его перекрытию со строкой состояния ... это странно, потому что до версии 3.0 у меня никогда не было проектов с таким поведением. 0,0 всегда находился под строкой состояния. В любом случае, я увидел, что это перекрывается, поэтому я начал выставлять свои просмотры на 0,20 или, как бы ни была велика строка состояния. Это было круто, пока я не попытался использовать контроллер модального представления, когда он отклонился, я обнаружил пробел в размере строки состояния (то, что вы истекаете), по какой-то причине модальное представление думает, что 0,0 НЕ перекрывает строку состояния и когда он отклоняет 0,20 (из вашего предыдущего представления), отображается, как если бы (0,0) не перекрывал круг, а (0,20) имел дополнительный белый промежуток. Почему это началось? Понятия не имею. В любом случае, чтобы исправить это, я знал, что мне нужно исправить полное совпадение представления и строки состояния в 0,0. Я продолжал пытаться, но ничего не делал, затем я решил попробовать создать новый проект на основе представления в xcode (который устанавливает для вас начальное представление) и посмотреть, перекрываются ли их представления (или если они выставили его на 0,20), что я Выяснилось, что он НЕ перекрывался, и 0,0 было правильным размещением, прямо под строкой состояния, а не перекрывая ее. Bizzare? я думаю так. Итак, что я сделал в своем проекте, это скопировал настройку, которая была у них во вновь созданном проекте на основе представления (они устанавливают свойство viewControllers через Interface Builder, вы можете создать проект на основе представления, как я, и просто имитировать их настройку), я обнаружил, что это устранило проблему, представления на 0,0 больше не перекрывали строку состояния, а отключение контроллеров модальных представлений больше не оставляло зазора. Не знаю, если это ваш случай,

2
ответ дан 28 November 2019 в 23:37
поделиться

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

[self.view setFrame:CGRectMake(0, 10, self.view.frame.size.width, self.view.frame.size.height)];

Просто отрегулируйте смещение Y в соответствии с вашими потребностями. В другом случае мне пришлось сделать 20 вместо 10.

6
ответ дан 28 November 2019 в 23:37
поделиться

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

Моя проблема в том, что как только я поместил модальный VC в подпредставление TabController (которое, в свою очередь, является подвидом всеобъемлющего NavController View, который контролирует верхнюю панель NavBar ... что превращается в кошмар делегирования), а затем отклоняет MVC, возвращаемое представление перемещается под панель NavBar. Этого не происходит, когда я добавляю или продвигаю какие-либо другие подвиды, только с помощью MVC.

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

Моя проблема в том, что как только я поместил модальный VC в подпредставление TabController (которое, в свою очередь, является подвидом всеобъемлющего NavController View, который контролирует верхнюю панель NavBar ... что превращается в кошмар делегирования), а затем отклоняет MVC, возвращаемое представление перемещается вверх под NavBar. Этого не происходит, когда я добавляю или продвигаю какие-либо другие подвиды, только с помощью MVC.

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

Моя проблема в том, что как только я поместил модальный VC в подпредставление TabController (которое, в свою очередь, является подвидом всеобъемлющего NavController View, который контролирует верхнюю панель NavBar ... что превращается в кошмар делегирования), а затем отклоняет MVC, возвращаемое представление перемещается под панель NavBar. Этого не происходит, когда я добавляю или продвигаю какие-либо другие подвиды, только с помощью MVC.

Моя проблема в том, что как только я поместил модальный VC в подпредставление TabController (которое, в свою очередь, является подвидом всеобъемлющего представления NavController, которое контролирует верхнюю панель навигации ... что превращается в кошмар делегирования) и затем отклоните MVC, возвращаемое представление будет помещено в панель NavBar. Этого не происходит, когда я добавляю или продвигаю какие-либо другие подвиды, только с помощью MVC.

Моя проблема в том, что как только я поместил модальный VC в подпредставление TabController (которое, в свою очередь, является подвидом всеобъемлющего представления NavController, которое контролирует верхнюю панель навигации ... что превращается в кошмар делегирования) и затем отклоните MVC, возвращаемое представление будет помещено в панель NavBar. Этого не происходит, когда я добавляю или продвигаю какие-либо другие подвиды, только с помощью MVC.

[self.view setFrame: (CGRect)] действительно помогает, если я назову его сразу после [self dismissModal ...]. Однако он должен вызываться во всех подпредставлениях моего контроллера панели вкладок , или даже другие списки перемещаются под панель. Пупи.

Делает вещи головной болью, но не неразрешимой. Но я согласен, это новая ошибка в 3.x (или, может быть, это одна из тех обоюдоострых «новых функций»), и это совершенно раздражает. Я загружаю SDK 3.1.2 и, надеюсь, он решит эту проблему. Прокомментирую мои строки [setFrame] и посмотрим, что произойдет. Но, надеюсь, если это не решится в этой версии, то скоро это будет. До тех пор кажется, что решение состоит в большом количестве (по общему признанию хакерского и повторяющегося) кода.

РЕДАКТИРОВАТЬ: Нет, обновление не помогло. Какашка. Вернемся к коду, я иду, жестко определить положение каждого экрана. Потрясающе. Надеюсь, размер панелей навигации и вкладок никогда не изменится.

РЕДАКТИРОВАТЬ 2: Эй! Я решил это! (i R prowd.) Кажется, проблема заключалась в том, что, когда мой MVC был отклонен, мое представление было передано обратно контроллеру панели вкладок, который «забыл» о том, что над ним была панель навигации. Не говорите мне, как, я, вероятно, уже покинул задокументированную территорию. Но я решил свою конкретную проблему, просто переопределив [subview.view setFrame: 0,0, width, height] после возвращения из редактирования. Не уверен, почему это дало какое-то различие, но в приложении это было, потому что первые полторы строки моего представления таблицы больше не крадутся под панелью навигации. Так что у меня действительно нет совета, просто найдите подходящее место для размещения

никогда не изменится.

РЕДАКТИРОВАТЬ 2: Эй! Я решил это! (i R prowd.) Кажется, проблема заключалась в том, что, когда мой MVC был отклонен, мое представление было передано обратно контроллеру панели вкладок, который «забыл» о том, что над ним была панель навигации. Не говорите мне, как, я, вероятно, уже покинул задокументированную территорию. Но я решил свою конкретную проблему, просто переопределив [subview.view setFrame: 0,0, width, height] после возвращения из редактирования. Не уверен, почему это дало какое-то различие, но в приложении оно имело место, потому что первые полторы строки моего представления таблицы больше не крадутся под панелью навигации. Так что у меня действительно нет совета, просто найдите правильное место для размещения

никогда не изменится.

РЕДАКТИРОВАТЬ 2: Эй! Я решил это! (i R prowd.) Кажется, проблема заключалась в том, что, когда мой MVC был отклонен, мое представление было передано обратно контроллеру панели вкладок, который «забыл» о том, что над ним была панель навигации. Не говорите мне, как, я, вероятно, уже покинул задокументированную территорию. Но я решил свою конкретную проблему, просто переопределив [subview.view setFrame: 0,0, width, height] после возвращения из редактирования. Не уверен, почему это дало какое-то различие, но в приложении это было, потому что первые полторы строки моего представления таблицы больше не крадутся под панелью навигации. Так что у меня действительно нет совета, просто найдите подходящее место для размещения

который «забыл», что над ним была навигационная панель. Не говорите мне как, я, вероятно, уже покинул задокументированную территорию. Но я решил свою конкретную проблему, просто переопределив [subview.view setFrame: 0,0, ширина, высота] после возвращения из редактирования. Не уверен, почему это дало какое-то различие, но в приложении оно имело место, потому что первые полторы строки моего представления таблицы больше не крадутся под панелью навигации. Так что у меня действительно нет совета, просто найдите правильное место для размещения

который «забыл», что над ним была навигационная панель. Не говорите мне, как, я, вероятно, уже покинул задокументированную территорию. Но я решил свою конкретную проблему, просто переопределив [subview.view setFrame: 0,0, width, height] после возвращения из редактирования. Не уверен, почему это дало какое-то различие, но в приложении оно имело место, потому что первые полторы строки моего представления таблицы больше не крадутся под панелью навигации. Так что у меня действительно нет совета, просто найдите подходящее место для размещения

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

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

[(соответствующийViewController) .view setFrame: CGRectMake (0,0, self.view.frame.size.width, self.view.frame.size.height];

Не знаю, почему это работает, но работает. Разве это не самая ужасная ошибка?

1
ответ дан 28 November 2019 в 23:37
поделиться

У меня была точно такая же проблема... мое решение? Вручную установите высоту представления, которое вы отображаете модально, на 480 px в конструкторе интерфейсов.

Проблема решена.

2
ответ дан 28 November 2019 в 23:37
поделиться

Просто хотел перезвонить и сказать, что у меня была прямо противоположная проблема - белый зазор в нижней части экрана. И исправление было также противоположным, я представлял из подвида, когда мне нужно было представлять от родителя. Спасибо!

4
ответ дан 28 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: