2010-12-23 2 views
4

Ich habe meine eigene benutzerdefinierte Ansicht erstellt, die UIControl erweitert. Diese benutzerdefinierte Ansicht verfügt über eine eigene Touch-Implementierung. Ich habe die Methoden touchesBegan, Moved, Ended und Canceled implementiert.Wie kann man Multitouch bei mehreren Ansichten deaktivieren?

Im Hauptansicht-Controller habe ich mehrere Instanzen dieser Ansicht erstellt. Auf dem Bildschirm gibt es eine Reihe von benutzerdefinierten Schaltflächen.

Ich möchte Multitouch in meiner App deaktivieren. Wenn ich auf eine benutzerdefinierte Schaltfläche klicke, sollten andere Schaltflächen nicht reagieren.

Eigentlich war es einfach, dies zu implementieren. Während ich einige Tasten hielt, konnte ich einfach die userInteractionEnabled-Eigenschaft anderer Tasten auf NO setzen, bis ich die Berührung beendete.

Aber das Problem ist, dass, wenn ich diese mehrere Tasten gleichzeitig antippen, zwei oder mehr touchsbegan Methoden gleichzeitig arbeiten, und die Weitergabe von Nachrichten ist durcheinander.

Ich habe versucht, multiTouchEnabled = NO und exclusiveTouch = YES zu setzen, aber es hat immer noch nicht funktioniert.

Wie kann ich erzwingen, Multitouch in meiner App zu deaktivieren?

Vielen Dank.

Antwort

6

Sie müssen exclusiveTouch auf YES setzen, nicht NO (was sowieso die Standardeinstellung ist). Der Name der Eigenschaft bezieht sich auf die Ansicht, die für die Dauer ausschließlicher Empfänger von Berührungsereignissen ist.

+0

oh .. sorry. Ich habe mich vertippt. Ich habe exclusivTouch auf YES gesetzt, aber es hat immer noch nicht funktioniert. – pnmn

+0

@kyu Möglicherweise müssen Sie in Ihren Implementierungen von touchesBegan: withEvent: 'und friends" super "aufrufen, da die Oberklasse möglicherweise die Logik für die Behandlung von' exclusiveTouch' enthält. –