Количество касаний - PullRequest
       2

Количество касаний

0 голосов
/ 09 августа 2009

Я хочу получить количество нажатий в любом месте экрана.

Вот мой код:

-(void) touchesEnded: (NSSet *)touches withEvent: (UIEvent *)event
{
    DebugLog(@"touches: %d", [touches count]);
}

Этот метод реализован в активном контроллере вида.

Но он не обнаруживает несколько нажатий - он сообщает обо мне как одно нажатие.

Как я могу получить количество нажатий?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 августа 2009

Проблема заключается в том, как сообщается о касаниях в этом методе. NSSet touches в этом методе содержит один или несколько экземпляров UITouch, и каждый экземпляр UITouch представляет события касания одним пальцем на экране. Таким образом, если пользователь касается экрана двумя пальцами, набор touches будет содержать два объекта UITouch.

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

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Got %u touches", [touches count]);
    for(UITouch *touch in touches) {
        NSLog(@"Touch had %u taps", [touch tapCount]);
    }
}

Для получения дополнительной информации:

1 голос
/ 09 августа 2009

Похоже, вам, возможно, просто нужно включить «Multiple Touch» через Инспектор атрибутов представления Интерфейсного Разработчика для элемента пользовательского интерфейса или представления, с которым вы работаете.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...