Monotouch.Dialog IOS 6 Разделенное представление Проблема с вращением

УДАР .. до сих пор не понял, штука вращается, но вне поля зрения. так странно. Могу ли я предоставить более подробную информацию, чтобы получить помощь?

ЕЩЕ ЕСТЬ ЭТА ПРОБЛЕМА! это очень плохо, я не могу это исправить :( помогите ПОЖАЛУЙСТА

БУМП .. пожалуйста, я умираю здесь! кто-нибудь кто-нибудь! :)

Итак, я использую Monotouch.Dialog, и, начиная с IOS 6, вращение моего контроллера splitview ведет себя странно.

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

Я добавил необходимую функцию ShouldAutorotate и установил GetSupportedInterfaceOrientations с IOS 6. Как я уже сказал, он вращается, но что-то просто не так.

Я пробовал симулятор IOS 5, и он работает, так что это определенно проблема IOS 6.

У кого-нибудь есть идея, где еще я должен искать проблему?

РЕДАКТИРОВАТЬ: во время отладки я заметил, что он не переходит в переопределение ShouldAutorotate моего основного и подробного представления, только в моем контроллере разделенного представления, который он входит. В iOS 5 он правильно переходит в ShouldAutorotateToInterfaceOrientation.

Вот код, который я использую в представлениях Detail и Master:

public override bool ShouldAutorotate()
    {
        return true;
    }
    [Obsolete]
    public override bool ShouldAutorotateToInterfaceOrientation       (MonoTouch.UIKit.UIInterfaceOrientation toInterfaceOrientation)
    {
        return true;
    }

И вот код, который у меня есть в моем SplitViewController:

public override bool ShouldAutorotate()
    {
        return true;
    }

    [Obsolete]
    public override bool ShouldAutorotateToInterfaceOrientation(UIInterfaceOrientation requested)
    {
        return requested == UIInterfaceOrientation.LandscapeRight || requested == UIInterfaceOrientation.LandscapeLeft;
        //return requested == UIInterfaceOrientation.Portrait || requested == UIInterfaceOrientation.PortraitUpsideDown;

    }

    public override bool ShouldAutomaticallyForwardRotationMethods {
        get {
            return true;
        }
    }

кто-нибудь, пожалуйста? мне нужно это для моей работы, и я не могу решить это! любые идеи будут полезны!


person Roy Harel    schedule 09.10.2012    source источник
comment
Я заметил, что ShouldAutoRotate вызывается на моем контроллере разделенного представления, но не на контроллерах подробного и основного представления. Я использую UITableViewController для подробного представления и UINavigationController для основного представления.   -  person Roy Harel    schedule 10.10.2012


Ответы (2)


Трудно догадаться, что не так, не видя самого кода. Скорее всего, он работает на iOS 5.x, потому что будет вызывать старый shouldAutorotateToInterfaceOrientation: (и потому что ваше приложение и/или MonoTouch.Dialog уже поддерживает это).

Это устарело в iOS6, но оно по-прежнему будет называться для обратной совместимости, если вы не замените его. Обратите внимание на форму множественного числа replacements из документа Apple:

Вместо этого переопределите поддерживаемые методыInterfaceOrientations и предпочитаемыйInterfaceOrientationForPresentation.)

Уведомление об устаревании не означает, что iOS6 не будет работать со старым API. Осталось добавить некоторые новые, улучшенные API, а старый API может быть удален в каком-нибудь будущем выпуске iOS (до сих пор удаление было очень редко).

Примечание. Я призываю вас прекратить использовать старый API из версий iOS, которые вы не поддерживаете (например, то, что не рекомендуется в iOS 4.0, должно использоваться только в приложениях, поддерживающих 5.0 и более поздние версии). Однако дублирование кода для поддержки как 5.0, так и 6.0 best API может быть плохой идеей, если только вы не получите от этого что-то (например, новые функции).

Большинство новых API, устаревших API, призваны облегчить, а не усложнить вашу жизнь.

person poupou    schedule 09.10.2012
comment
ну, это, безусловно, усложняет работу прямо сейчас, хе-хе ... но если бы это не работало, вращение из-за IOS6 устройство даже не вращалось бы, что оно и делает. Что может заставить его повернуть детальный вид за пределы экрана? - person Roy Harel; 10.10.2012
comment
это то, что я использую в своем подробном и основном представлении: public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation) { base.DidRotate (fromInterfaceOrientation); this.TableView.SelectRow(lastSelectedQuestion, false, UITableViewScrollPosition.Middle); } публичное переопределение bool ShouldAutorotate() { return true; } [Устарело] public override bool ShouldAutorotateToInterfaceOrientation (MonoTouch.UIKit.UIInterfaceOrientation toInterfaceOrientation) { return true; } - person Roy Harel; 10.10.2012
comment
и это у меня есть в контроллере разделенного представления: public override bool ShouldAutorotate() { return true; } [Устарело] public override bool ShouldAutorotateToInterfaceOrientation(UIInterfaceOrientation Requested) { return Requested == UIInterfaceOrientation.LandscapeRight || запрашиваемый == UIInterfaceOrientation.LandscapeLeft; //требуется возврат == UIInterfaceOrientation.Portrait || запрашиваемый == UIInterfaceOrientation.PortraitUpsideDown; } публичное переопределение bool ShouldAutomaticallyForwardRotationMethods { get { return true; } } - person Roy Harel; 10.10.2012
comment
Пожалуйста, отредактируйте исходный вопрос. Его будет намного легче читать, и его увидит гораздо больше людей (не только я). - person poupou; 10.10.2012

Также не забудьте установить window.rootViewController (иначе поворот не будет работать на iPad).

person laktak    schedule 21.08.2013