надежный способ получить iPhone сенсорный ввод? - PullRequest
0 голосов
/ 01 марта 2010

Я начал использовать образец MoveMe для работы сенсорного ввода.

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

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{

    for ( UITouch* touch in touches )
    {
        printf("touch down");
    }
}



- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{
    for ( UITouch* touch in touches )
    {
        printf("touch up");
    }
}

Это прекрасно работает, пока у вас не будет более 5 касаний на экране одновременно. тогда он перестает работать должным образом, вы не получите сообщение «Прикосновение вниз», если на экране более 5 касаний. что еще хуже, вы не сможете получать все сообщения «подправить», пока не уберете ВСЕ пальцы с экрана.

Если вы дотронетесь до 6 пальцев, затем отпустите 3, затем снова дотронетесь до тех пор, пока остальные 3 еще не нажаты, вы получите «касание вниз», но если вы отпустите его, иногда вы получаете «подкрашивание», иногда вы надеваете «т.

Это в значительной степени делает невозможным отслеживание касаний и, как правило, приводит к тому, что касание постоянно «застревает», когда оно передается моему сенсорному менеджеру.

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

EDIT:

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

он принимает только одно касание за раз, если на экране более одного касания, он «отменяет» все касания, но он должен отслеживать их, чтобы знать, что на экране «более одного» касания .

если я касаюсь экрана, кнопка опускается, теперь, если я добавляю еще одно касание к экрану, кнопка отпускается, круто, недопустимо более одного касания. Теперь, если я добавлю еще 4 пальца к экрану, всего 6, экран должен сломаться, и когда я отпущу эти 6 пальцев, приложение не получит никаких обратных вызовов «вверх». Тем не менее, когда я отпускаю их все и снова касаюсь, кнопка нажимается, поэтому он знает, что я отпустил все эти пальцы! как ??

Ответы [ 2 ]

2 голосов
/ 01 марта 2010

Проблема, с которой вы столкнулись, заключается в том, что iPhone и iPod touch поддерживают только до пяти касаний одновременно (пальцы все еще касаются экрана). Это, вероятно, аппаратный предел.
(Как уже сказал вам St3fan.)

Система отменит все касания, если их более 5 одновременно: touchesCancelled: withEvent: (Это, вероятно, то, что вызывает странное поведение только с некоторыми касаниями, вызывающими touchesEnded: withEvent:)

Если вы хотите знать, закончилось ли касание и закончилось ли оно, потому что оно было отменено, то обязательно проверьте свойство фазы UITouch.

1 голос
/ 01 марта 2010

Он перестает работать, потому что 5 - это максимальное количество касаний, которые в настоящее время поддерживают iPhone и iPod. Боюсь, нет пути.

...