Как я могу почувствовать, что пользователь удерживает палец на экране, не двигаясь? - PullRequest
0 голосов
/ 23 июня 2010

Лучший метод, который я могу придумать, - это запустить таймер в методе событий touchesBegan. Если таймер истекает до наступления события touchesEnded, то вы знаете, что пользователь удерживает нажатой клавишу на экране. Если вызывается событие touchesMoved, просто сбросьте таймер, чтобы обнаружить только удерживание без движения.

Есть ли какая-либо функциональность, встроенная в iOS SDK, чтобы справиться именно с этим? Или какие-нибудь лучшие, более простые и быстрые методы, о которых можно подумать?

Заранее спасибо за помощь!

Ответы [ 2 ]

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

Попробуйте использовать UILongPressGestureRecognizer .

UILongPressGestureRecognizer* gr = [[UILongPressGestureRecognizer alloc]
                                    initWithTarget:theTarget
                                            action:@selector(someAction:)];
// change options of gr if you like.
// default: tolerate movement up to 4 px, fire the event after 0.4 secs.
[theView addGestureRecognizer:gr];
[gr release];

Когда пользователь будет долго нажимать [theTarget someAction:gr].

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

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

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

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

...