iPhone, дублирующее сообщение о методе после аппаратного поворота? - PullRequest
0 голосов
/ 28 января 2010

Я почти уверен, что вижу, как это должно работать, но мне так же любопытно, почему.Когда я поворачиваю iPhone в симуляторе, метод (см. Ниже), который позволяет ориентацию, вызывается дважды при каждом вращении.Для этого есть причина?

-(BOOL)shouldAutorotateToInterfaceOrientation:interfaceOrientation

EDIT_001

Это то, что вызывается, когда iPhone обнаруживает поворот, мне просто любопытно, что каждый раз, когда я выполняю поворот в симуляторе, операторы NSLog печатаются дважды (т.е.метод вызывается дважды)

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    BOOL autoRotate = NO;

    switch(interfaceOrientation) {
        case UIInterfaceOrientationPortrait:
            NSLog(@"Orientation(%d): Portrait Supported", interfaceOrientation);
            autoRotate = YES;
            break;
        case UIInterfaceOrientationPortraitUpsideDown:
            NSLog(@"Orientation(%d): UpsideDown unsupported", interfaceOrientation);
            autoRotate = NO;
            break;
        case UIInterfaceOrientationLandscapeLeft:
            NSLog(@"Device: RIGHT, Interface: LEFT(%d)", interfaceOrientation);
            autoRotate = YES;
            break;
        case UIInterfaceOrientationLandscapeRight:
            NSLog(@"Device: LEFT, Interface: RIGHT(%d)", interfaceOrientation);
            autoRotate = YES;
            break;
    }
    return(autoRotate);
}

Гари

Ответы [ 2 ]

1 голос
/ 28 января 2010

Вы проверили аргументы, переданные shouldAutorotateToInterfaceOrientation:? Я обнаружил, что он вызывается один для горизонтального, и один раз для вертикального - в основном, чтобы спросить, какие ориентации в порядке, а затем он обычно не вызывается снова.

Если вы делаете что-то там, что вы хотите делать каждый раз, когда устройство поворачивается, я думаю, что гораздо лучше либо использовать willRotateToInterfaceOrientation:duration:, либо прослушивать уведомления о вращении (через UIDeviceOrientationDidChangeNotification), и оставить shouldAutorotateToInterfaceOrientation: чтобы отметить, что ваше приложение позволяет вращать этот контроллер представления.

0 голосов
/ 28 января 2010

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

-Оскар

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...