2010-02-25 4 views
3

Я использую TouchesBegan TouchesMoved с Multitouch.TouchesBegan и TouchesEnded with Multitouch issue

У меня есть ручная реализация того, что по существу является кнопкой.

Я ограничиваю тест на точку TouchesBegan, чтобы установить кнопку как вниз, и то же самое для TouchesEnded, чтобы сбросить ее.

Проблема заключается в том, что пользователь перемещает палец из границ кнопки перед тем, как поднимать, а затем TouchesEnded находится за пределами границы кнопки, где началось касание.

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

Каково рекомендуемое решение этой проблемы? UIButton должен каким-то образом сделать что-то подобное.

+0

Что вы имеете в виду, реселлируя все? Поддерживает ли ваш класс кнопки касание (isTouched, isReleased), или другой «контроллер» удерживает касание? –

+0

@AZ У меня есть флаг, который отслеживает, когда моя «кнопка» отсутствует или нет. Я мог бы использовать TouchesEnded для сброса всех флагов (на всех кнопках), но тогда люди не могли удерживать одну кнопку вниз, выпуская еще – PeanutPower

ответ

3

Вам необходимо следить за прикосновениями: и «деактивировать» вашу кнопку, когда прикосновение перемещается за пределы ее границ и «повторно активировать» вашу кнопку, когда касание вернется. См. Handling a Complex Multi-Touch Sequences для объяснения того, как смотреть мутации на multi-touch sequence (причудливый способ сказать «какой палец был?»)

+0

ahh, благодаря тому, что я искал. Поэтому они используют словарь для хранения информации касания. – PeanutPower

+2

Я настаиваю на предупреждении Apple не использовать NSDictionary, а вместо CFDictionaryRef. Получите поддержку по трем сторонам с этой ошибкой. –

Смежные вопросы