2013-07-25 2 views
1

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

Деталь: Вот сценарий, который создает проблему. Если я начну с портрета, все мои кнопки работают. Я вращаюсь к пейзажу (см. Код ниже), и все кнопки работают. Я поворачиваю назад к портрету, а кнопки справа 1/4 экрана не реагируют. Это похоже на прозрачный вид, который охватывает эти кнопки. Странно то, что если часть кнопки торчит слева от этого невидимого барьера, я могу нажать на эту часть кнопки, но не на правую часть, находящуюся под «крышкой». Если бы я сейчас вращался до пейзажа, все кнопки в пейзажной работе. Когда я поворачиваюсь назад к портрету, эта невидимая «обложка» переместилась влево на другую 1/4, чтобы покрыть примерно 1/2 экрана. Если я снова повернусь к пейзажу (все кнопки всегда работают в альбомной ориентации), а затем назад к портрету, невидимая «обложка» переместилась на другую 1/4, чтобы закрыть 3/4 экрана. В конце концов, ни один из моих элементов управления не реагирует на портрет.

Важная информация Проект:

  1. Это приложение является универсальным. Проблема возникает только в режиме просмотра iPad. Версия iPhone никогда не показывает эту проблему в портретном (или ландшафтном) режиме.
  2. Имеются только 3 вида: вид контейнера (который является корнем), портретный вид и пейзаж.
  3. Это приложение ARC и цели 6.1. У меня есть все правильные методы обработки событий вращения.

Вот код для вращения просмотров:

[portrait removeFromSuperview]; 
[landscape removeFromSuperview]; 

UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation]; 
if (currentOrientation==UIDeviceOrientationUnknown) { 
    currentOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation]; 
} 
if ((currentOrientation == 0) || (UIInterfaceOrientationIsPortrait(currentOrientation))) { 
    [[self view] addSubview:portrait]; 
} 
else { //landscape 
    [[self view] addSubview:landscape]; 
} 

То, что я пытался:

  1. Вопросы, которые я обнаружил, что звук отдаленно напоминающей упоминается проверка на наличие утечек памяти с помощью инструменты. Я пробовал шаблоны зомби и распределения и не видел ничего странного (хотя это первый я использовал Инструменты).
  2. EDIT: все это в симуляторе, я еще не тестировал эту проблему на устройстве.

Благодарим за помощь.

+1

Вы опрашиваетесь подвиды во время выполнения и добавили границу для каждого, так что вы можете увидеть, где они? – Wain

+0

Это не имеет никакого отношения к утечкам памяти, кнопки, вероятно, движутся вне границ своего супервизора. Дайте надписью цвет фона, чтобы вы могли видеть, где он находится, и посмотрите, что происходит. – rdelmar

+0

Еще проще, установите для свойства 'clipsToBounds' объекта superview значение YES. –

ответ

-1

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

1

В строке меню симулятора выберите

Debug -> Color Blended Слои

Затем Command + поверните

Тогда Command + повернуть его назад

Там, вероятно, будет вид, что получает redimensioned причудливо и covers- может быть, частично - Ваша кнопка

+0

спасибо за ярлыки –