Как правильно очистить UIButton? - PullRequest
0 голосов
/ 13 августа 2010

У меня проблемы с UIButton с iPhone SDK. Я определил, что когда я удерживаю UIB-кнопку, когда родитель удален (и впоследствии убрана), я получаю странное поведение. В моем случае приложение перестает получать какие-либо входные данные, как будто очищенная удерживаемая кнопка каким-то образом похитила систему ввода.

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

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

Что для этого необходимо, так это возможность немедленно двигаться дальше и убирать, даже если кнопка все еще нажата. Я подумал, что мог бы применить некоторые хитрости, чтобы отложить очистку кнопки вверх, но я был бы удивлен, если бы не было просто какого-либо способа правильно очистить кнопку для удаления независимо от того, в каком состоянии она находится в данный момент. *

Ответы [ 2 ]

0 голосов
/ 13 августа 2010

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

[mMapView setCenterCoordinate: mCoordinates animated: YES];

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

0 голосов
/ 13 августа 2010

Это может помочь, если вы объясните, какое поведение вы ожидаете.Если вы звоните -removeFromSuperview , удерживая вид, который вы хотите удалить (или его родительский элемент), я бы посоветовал вам вместо этого скрыть вид и установить флаг, который вы можете искать, когда пользователь заканчивает удержание, которое будетв этот момент вызовите -removeFromSuperview .

...