2010-04-07 3 views
0

У меня есть следующие фрагменты кодаMiss одним нажатием случайным образом

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

    UITouch *touch = [touches anyObject]; 
    NSUInteger numberTaps = [touch tapCount]; 

    // Tapping 
    if (numberTaps > 0) { 
     // do something 
    } 

... 

Приведенный выше код в основном обнаруживает одним нажатием на небольшом изображении (ширина = 18 и высота = 36). Он работает 90% времени, обнаруживая один кран.

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

Что я сделал неправильно или пропустил, чтобы я мог постоянно обнаруживать единственный кран на 100%?

+0

Откуда вы знаете его не только характер оборудования? – Pyrolistical

+0

Хорошая точка. Но похоже, что другие приложения работают нормально. – pion

+0

** Чтобы отладить ** эту проблему, вы можете переопределить '- [UIApplication sendEvent:]' в категории в 'UIApplication', вызывающей фактическую реализацию, используя [суперсущественную реализацию] Мэтта Галлахера (http://www.cocoawithlove.com/ 2008/03/supersequent-implementation.html). Это позволит вам получить событие, созданное при нажатии экрана и получить все связанные с ним привязки (через '- [UIEvent allTouches]'). Из UITouch (предположительно есть только один из 'NSSet', возвращенный из' allTouches'), вы можете получить представление о том, что прикосновение использовалось с помощью '- [UITouch view]'. –

ответ

1

Возможно, вам не хватает крана, потому что ваш палец недостаточно точен, чтобы всегда попадать в нужное место на оборудовании. У меня есть небольшие изображения в приложении, которые можно прослушивать, и я часто их пропускаю. Попробуйте сделать изображение более крупным, чтобы проверить, всегда ли оно работает. Вы можете искусственно сделать изображение более крупным с пустым пространством вокруг него, чтобы сделать его более точным.