Лучший способ реализовать касание в любом месте, чтобы отменить (а-ля кнопка загрузки App Store)? - PullRequest
2 голосов
/ 14 марта 2009

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

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

Я думал о том, чтобы использовать защитное окно вместо вида и связываться с hitTest:withEvent: и pointInside:forEvent:. Проблема с этими двумя заключается в том, что суперпредставление элемента не занимает весь экран.

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

Мысли

Ответы [ 3 ]

2 голосов
/ 14 марта 2009

Вы можете создать еще один UIWindow, позвонить -makeKeyAndVisible и затем уничтожить окно, когда закончите с ним. UIAlertView делает именно это, чтобы контролировать весь экран.

1 голос
/ 07 февраля 2010

Я написал некоторый код , который достигает такого поведения довольно чисто. Вам не нужно перерисовывать элемент в виде охранника. Вам просто нужен подкласс a UIControl, который может передавать касания элементу . Вам также не нужно разрушать защитное окно; Вы можете просто скрыть это. Ваши UIApplicationDelegate могут прослушивать UIWindowDidBecomeHiddenNotification с, отправленные UIWindow с, которые не являются основным окном, и затем вызывать метод -makeKeyAndVisible главного окна.

0 голосов
/ 30 марта 2011

Гораздо более простое решение, которое я придумал, - это создать еще одну кнопку UIB внутри кнопки хранилища, которую вы создаете, а затем вставить ее под self в keyWindow приложения. Затем используйте эти кнопки UIEventTouchDown, чтобы отменить выбор кнопки магазина и удалить себя. Работает как шарм.

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