UIButton перестает отвечать после перехода в ландшафтный режим - iPhone - PullRequest
1 голос
/ 20 мая 2010

Последние несколько дней я пробовал разные вещи, и у меня кончились идеи, поэтому я ищу помощи. Ситуация такова, что я показываю мой магазин покупок в приложении после того, как пользователь нажимает кнопку. Нажата кнопка, вид отображается. Магазин показывает нормально. В этом представлении у меня есть несколько ярлыков с описанием товара, а затем под ними у меня есть цена и кнопка «Купить», которая запускает покупку в приложении. Проблема в том, что когда я поворачиваю телефон в альбомную ориентацию, кнопка «Купить» больше не реагирует, странно. Прекрасно работает в портретной.

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

Вот грубая структура моего взгляда в IB, все вращение и макет настроены в IB. Я установил автоматическое изменение размера в IB, чтобы в ландшафте все выглядело нормально, а кнопка «Купить» немного расширялась по горизонтали. Единственная манипуляция с макетом, которую я делаю в своем коде, это после загрузки я устанавливаю размер содержимого представления прокрутки.

File Owner with view set to the scrollView      
/ scrollView  
----/ view  
--------/ label  
--------/ label  
--------/ label  
--------/ label  
--------/ label  
--------/ label  
--------/ label  
--------/ label  
--------/ uibutton (Buy)  

После изменения ориентации я распечатал свойство userInteractionEnabled scrollView и кнопки, и они оба были ИСТИНА во всех ориентациях.

Идеи? Или, может быть, какой-то другой способ отображения кнопки покупки, которая не будет нефункциональной? Я уже начал ветку, которая играет с панелью инструментов и помещает туда кнопку покупки, но мне кажется, что я не могу удержать панель во время прокрутки.

Ответы [ 3 ]

3 голосов
/ 19 июня 2010

Похоже, вы обошли свою проблему, но на случай, если другие посмотрят, я столкнулся с подобной проблемой и нашел решение.

Я программно добавил скроллвью. Затем я бы вызвал setContentSize, чтобы убедиться, что представление прокрутки было таким же высоким, как и представление, которое я хотел показать. Представление, которое я показывал, было настроено как с UIViewAutoresizingF FlexibleWidth, так и с UIViewAutoresizingF FlexibleHeight.

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

В любом случае, если у меня только подпредставление имеет гибкую ширину, все снова работает. Вы должны иметь возможность отключить гибкую высоту программно или в конструкторе интерфейсов (стрелка в поле указывает вверх и вниз).

1 голос
/ 21 мая 2010

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

File Owner with view set to the parent view  
/ view
----/ scrollView  
--------/ view  
------------/ label  
------------/ label  
------------/ label  
------------/ label  
------------/ label  
------------/ label  
------------/ label  
------------/ label  
----/ toolBar  
--------/ barbutton (Buy)  
0 голосов
/ 20 мая 2010

Мммм, может быть, кнопка находится в UIView, который вращается не так, как устройство, тогда вы просматриваете свою кнопку как всегда, но вне контейнера просмотра, который распространяет прикосновения.

Вы можете проверить в IB привязку представления в его контейнерах или выполнить кодирование.

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