события iPhone с сенсорным экраном - PullRequest
0 голосов
/ 01 июня 2010

в iPhone SDK есть функции touchesBegan, touchesEnded и touchesMoved, которые вызываются при появлении события касания. Моя проблема в том, что когда я кладу палец на экран, а я не двигаю его, невозможно узнать, есть ли палец на экране или нет. Есть ли способ узнать текущее состояние сенсорного экрана?

В любой из функций прикосновения Beg, touchesEnded и touchesMoved я могу использовать следующий код, чтобы узнать состояние каждого касания, но вне их я не могу:

NSSet *allTouches = [event allTouches];
for(GLuint index = 0; index < [allTouches count]; ++index)
{
    UITouch *touch = [[allTouches allObjects] objectAtIndex:index];
    if([touch phase] != UITouchPhaseCancelled)
    {
        CGPoint touchPoint = [touch locationInView:self];
        //do something with touchPoint that has state [touch phase]
    }
}

Ответы [ 2 ]

1 голос
/ 01 июня 2010

Вы должны хранить список всех точек, где в данный момент находятся касания. Убедитесь, что вы не просто сохраняете объекты UIEvent или UITouch (они не гарантируют долгую жизнь) - вместо этого создайте собственную структуру данных. Шансы - это все, что вам нужно, это отслеживать точки, где касания в настоящее время не работают.

0 голосов
/ 02 июня 2010

Если вы не хотите исправлять свой поврежденный дизайн, почему сохранение текущего списка активных касаний не решит вашу проблему?

NSMutableSet * touch;

В прикосновениях начал добавлять их, в прикосновениях Закруглил и прикосновения Отменил их удаление ...

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

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

...