2017-09-05 3 views
0

Mein UITableview befindet sich in einem Container (einer, der ein Embed-Segment benötigt, so dass ich statische Tabellenansichtszellen verwenden kann) und der Eltern-Controller des übergeordneten View-Controllers ist ein UIViewcontroller-Container.Warum benötigt ein UITableViewRow einen langen Druck, um ein Segment auszulösen?

Warum würde eine Zeile in der Tabellenansicht einen sehr langen Druck erfordern, um einen Übergang auszulösen?

Wenn ich den übergeordneten UIViewcontroller Container entfernen, funktioniert es OK.

+1

Schwer zu sagen. Aber mir passierte einmal, dass ein hinzugefügter (Tipp-) Gestenerkenner im Konflikt mit der Tabellenansicht stand, was zu etwas ähnlichem führte, das du beschreibst. –

+0

Ja, das ist es. Wie würde ich dem Tableview Priorität geben? –

+1

In meinem Fall entfernte ich den Gestenerkenner, da er nicht da sein sollte, während die Tabellenansicht sichtbar war. Für Sie sieht dies wie die Antwort aus, die Sie benötigen https://stackoverflow.com/questions/8192480/uitapgesure recognizer-breaks-passableview-didselectrotindexpath –

Antwort

0

Die Verzögerung kann die Verzögerung sein, die aufgetreten ist, um festzustellen, welche Teilansicht Sie berührt haben.

Wenn Sie irgendwo in Ihrem Fenster in Ihrer Anwendung berühren, das Fenster der App ruft hitTest:withEvent: Methode auf der meisten Top-Ansicht in der Ansichtshierarchie, die rekursiv hitTest:withEvent: für seine Subviews ruft schließlich die Ansicht zu erkennen, dass und Griffe tatsächlich erhält das Berührungsereignis. Im Grunde genommen ist die Anzahl der Unteransichten in Ihrem View-Controller umso größer, je länger die Verzögerung ist, bis die tatsächliche Ansicht reagiert. Die rekursiven Aufrufe an hitTest:withEvent: kehren ein bisschen verzögert zurück, deshalb sehen Sie die Verzögerung. Das Entfernen des des übergeordneten Ansichtscontrollers führt nicht zu einer großen Verzögerung, da Sie die Anzahl der Subviews für den View-Controller verringern. Auch wenn mehr Scroll-Ansichten (oder mehr Subviews im Allgemeinen) involviert sind, geben Sie UIResponder ein, um mehr Subviews zu durchlaufen, um die Ansicht zurückzugeben, die das Touch-Ereignis behandelt.

+0

Es ist ein Konflikt mit einem Tap-Erkenner in der Draufsicht. Die Verzögerung ist viel zu langsam, um durch die Verarbeitungszeit verursacht zu werden. –

+0

Ja, das summiert sich. –

Verwandte Themen