Warum nicht UIButton ist exclusiveTouch-Eigenschaft standardmäßig auf YES eingestellt?
Ich bin sicher, es gibt eine Menge Gründe, warum jemand möchte, um mehr als eine Taste akzeptieren Sie berührt zugleich. Doch die meisten von uns brauchen nur eine Taste gedrückt werden, zu einer Zeit (für die navigation, für etwas zu sein, präsentiert Modal, eine popover, eine Ansicht, etc.).
So, warum sollte Apple legen Sie die exclusiveTouch
Eigenschaft von UIButton
standardmäßig auf NO?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehr alte Frage, aber verdient Klärung IMO.
Trotz der sehr irreführende Methode der Dokumentation von Apple eine Ansicht "A" mit exclusiveTouch gesetzt wird verhindern, dass andere Ansichten, die von der empfangenden Ereignisse so lange, wie Ein ist die Verarbeitung einige Ereignis selbst (z.B. eine Taste mit exclusiveTouch und legte einen finger drauf, dies wird verhindern, dass andere Ansichten, die in die Fenster aus wird die Interaktion mit, aber die Interaktion mit Ihnen folgt dem üblichen Muster, sobald Sie den finger vom exlusiveTouch-Element entfernt wird).
Ein weiterer Effekt ist die Verhinderung der Ansicht, Eine zum empfangen von Ereignissen so lange wie manche andere Ansicht ist mit interagiert (halten Sie eine Taste ohne exclusiveTouch set gedrückt, und diejenigen, die mit exclusiveTouch nicht in der Lage sein zum empfangen von Ereignissen als gut).
Können Sie immer noch eine Schaltfläche in der Ansicht, exclusiveTouch und interagieren mit den anderen, nur nicht zur gleichen Zeit, als dieser einfache test UIViewController beweisen (mal die richtigen Bindungen in der IB sind für beide Outlets und Aktionen):
In diesem Licht, der einzige gute Grund IMHO für Apple nicht zu exclusiveTouch JA für jedes UIView-Unterklasse ist, die es gemacht haben würde, die Umsetzung von komplexen gesten eine echte PITA, darunter wohl einige der gesten, die wir bereits gewohnt sind in der composite-UIView-Unterklassen (wie UIWebView), als Einstellung ausgewählt Ansichten zu exclusiveTouch=NEIN (like-button) ist schneller als eine rekursive exclusiveTouch=JA auf so ziemlich alles, was nur zu ermöglichen multitouch.
Der Nachteil davon ist, dass in vielen Fällen die counter-intuitive Verhalten von UIButtons und UITableViewCells (unter anderem...) führen könnten seltsame Fehler und das testen komplizierter (wie es mir passiert ist, wie... vor 10 Minuten? 🙁 ).
Hoffe es hilft
den
UIView
EigenschaftexclusiveTouch
bedeutet, dass die Ansicht (Taste) ist das EINZIGE, was in diesem Fenster, die mit interagiert werden kann, wenn es gesetzt ist, umYES
. Wie bereits in der docs: das Festlegen dieser Eigenschaft auf JA bewirkt, dass die Empfänger zu blockieren, die die Lieferung von touch-events zu anderen Ansichten im selben Fenster. Der Standardwert dieser Eigenschaft ist NEIN.Daher ist es das häufigste Verhalten, dass Sie möglicherweise über mehrere Tasten oder die Interaktion steuert/Ansichten in einem Fenster und wollen
exclusiveTouch
eingestelltNO
.Wenn Sie diese Eigenschaft setzen, um
YES
für jede UIView-Unterklasse in einem Fenster, man kann nicht interagieren mit etwas anderes in dem Fenster für so lange, wie die-Eigenschaft ist festgelegt aufYES
. Das heißt, wenn Sie initialisiert eine button mitexclusiveTouch = YES
haben, sondern auch eine Tabellenansicht oder eine andere Schaltfläche oder ein scroll-Ansicht oder eine andere Ansicht basiert auf der Interaktion, es reagiert nicht auf Berührungen.exclusiveTouch
zu NEIN auf beide Tasten und dann später, wenn der Benutzer drückt Sie beide zur gleichen Zeit, beide nennen Ihre Aktion Methoden. Und wenn Ihre Aktion Methoden-Konflikt aus irgendeinem Grund (sagen, die beiden von Ihnen schieben eine andere view controller an den navigation-stack), stürzt die Anwendung ab, daher meine Frage.exclusiveTouch bedeutet einfach, dass jede Ansicht, die sich unter Ihrem UIButton, wird nicht auf touch-Ereignisse.
Es ist standardmäßig auf no gesetzt, denn Sie wollen in der Regel den Blick unter diese Ereignisse. Zum Beispiel, wenn Sie einen UIButton auf der Spitze einer scroll-view, und der Benutzer möchte, um zu scrollen. Sie wollen den scrollView, um zu Blättern, auch wenn Sie beginnen mit Ihrem finger auf dem UIButton.
Ich war gerade das Lesen der release-notes für iOS 5 und die von dieser version der exclusiveTouch wird JA standardmäßig festgelegt. Also einfach im Hinterkopf behalten, dass es sich ändern wird mit der neuen iOS-version.
exclusiveTouch
eingestellt istYES
standardmäßig?