Как отключить мультитач при нескольких просмотрах?

Я создал свое собственное представление, расширяющее UIControl. Это настраиваемое представление имеет собственную сенсорную реализацию. Я реализовал в нем методы touchesBegan, Moved, Ended и Canceled.

В контроллере основного представления я создал несколько экземпляров этого представления. Итак, на экране есть несколько настраиваемых кнопок.

Я хочу отключить мультитач в своем приложении. Если я нажму одну настраиваемую кнопку, другие кнопки не будут реагировать.

Собственно, реализовать это было несложно. Пока я удерживал некоторые кнопки, я мог просто установить для свойства userInteractionEnabled других кнопок значение NO, пока не закончу касание.

Но проблема в том, что когда я нажимаю эти несколько кнопок одновременно, два или более метода touchBegan работают одновременно, и передача сообщений нарушается.

Я попытался установить multiTouchEnabled = NO и exclusiveTouch = YES, но это все равно не сработало.

Как я могу принудительно отключить мультитач в моем приложении?

Спасибо.


person pnmn    schedule 23.12.2010    source источник


Ответы (1)


Вам нужно установить exclusiveTouch в YES, а не NO (в любом случае это значение по умолчанию). Имя свойства относится к представлению, которое является эксклюзивным получателем любых событий касания в течение этого времени.

person Justin Spahr-Summers    schedule 23.12.2010
comment
ой, извини. Я опечатал их. Я установил для параметра exclusiveTouch значение ДА, но это все равно не сработало. - person pnmn; 23.12.2010
comment
@kyu Вам может потребоваться вызвать super в ваших реализациях touchesBegan:withEvent: и друзей, поскольку суперкласс может содержать логику для правильной обработки exclusiveTouch. - person Justin Spahr-Summers; 23.12.2010