Заявление об ориентации интерфейса iPhone не работает в OS 3.0? - PullRequest
0 голосов
/ 23 августа 2009

У меня есть следующий код, который оценивается как true и запускает код внутри фигурных скобок, которые я поворачиваю вправо (или влево) в ОС 2.2.1. Однако та же строка кода не оценивается как true (или не входит в скобки), если она скомпилирована и запущена для OS 3.0 ...

Я говорю это, потому что в отладчике (и журнале) строки внутри фигурных скобок пропускаются, если я скомпилировал для 3.0

Это внутри метода textViewDidBeginEditing для textView ...

Что-то изменилось между 2.x и 3.0 относительно того, как это обрабатывается? Текстовое поле без изменения размера было замечено пользователями как ошибка, которую я пытаюсь исправить ...

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

Заранее спасибо за любой совет ...

if((self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight))
{
    [self setTextViewHeight:107];
    NSLog(@"inside if self.interfaceorientation...");

}

Ответы [ 2 ]

1 голос
/ 31 августа 2009

Не знаю почему, но этот контроллер представления не знает своего собственного интерфейса. Я предполагаю, что это связано с тем фактом, что он «внутри» UITabBarController ... И «новый способ» обработки этого, который Apple изменил с 3.0.

Приветствуются уточняющие комментарии по поводу этого "изменения"!

Итог, self.interfaceOrientation всегда оценивалось в 1 («вверх») независимо от того, как устройство было повернуто ...

Я решил эту проблему, изменив ссылку и использовав вместо этого MyTabBarController.interfaceOrientation, поскольку «суперкласс» TabBarController, казалось, надежно «знал», какова была ориентация устройства.

(Конечно, я должен был дать этому классу ссылку на MyTabBarController, когда MyTabBarController загружает все UIViewController в себя ...) Это уже существовало в коде ...

Учитывая эту ссылку, следующее простое изменение дало мне доступ к «истинному» состоянию вращения ... и этот код выполнялся, когда ожидалось ...

if ((myTabBarController.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (myTabBarController.interfaceOrientation == UIDeviceOrientationLandscapeRight)) {
    [self setTextViewHeight:116];
0 голосов
/ 23 августа 2009

Попробуйте оператор журнала перед назначением textviewheight, если вы хотите проверить, введен ли этот блок (и нет, если он был завершен досрочно из-за ошибки в назначении)

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