Frage

Ich habe behinderte Interaktionen in meiner Grundansicht (die einige Subviews I enthält als Schaltflächen verwenden).

Ich halte diese Option deaktiviert, während ich eine sekundäre Ansicht habe Anzeige- Netzwerkaktivität (Laden von Daten). Wenn es fertig ist, ich wieder aktivieren Wechselwirkungen in der primären Ansicht.

Das ist so, wird der Benutzer nicht die Tasten, während der Netzbetrieb erfolgt tippen.

Wie auch immer, scheint alles gut, aber die, wenn die Benutzer Taste in der primären Ansicht beginnen klopfen, sobald die Wieder ermöglichen diese Berührungsereignisse auftreten (von den letzten Sekunden) tatsächlich auslösen. Nicht die Berührungen-begann, was die Tasten beleuchtet, aber die Funktionen auf den Berührungen digen genannt. Es ist wie seine die ganze Zeit die Warteschlange gestellt wurde „Rennen aufholen“ deaktiviert und.

Es ist sehr seltsam, warum Ereignisse Warteschlange gestellt werden würde berühren, während die Ansicht deaktiviert seine Interaktion mit dem Benutzer hat?

War es hilfreich?

Lösung

Es ist schwer, zuversichtlich, eine Antwort, hier zu sein, ohne den Code zu sehen, aber hier ist eine Idee:

Wenn Sie Ihre Netzwerkaktivität synchron ist, auch bekannt als blockiert, dann könnte es der Fall sein, dass die Berührungen des Benutzers Warteschlange gestellt werden, bevor sie eine Chance zu treffen alle Ihre Codes. Wenn das der Fall ist, dann werden diese berührt nicht in die Responder-Kette gesendet werden, bis die Netzwerkaktivität beendet ist, und sie würden nie eine Chance zu „wissen“, dass es sehr schwer behinderte Interaktion mit diesen Kontrollen erhalten.

Hier ist eine Art und Weise Sie Ihre Situation debuggen helfen könnte: Fügen Sie einige Debug NSLog Aussagen in der oberen Schicht (was Sie den sekundären Ansicht nennen), dass die Netzwerkaktivität ist anzeigt. Stellen Sie sicher, dass die Sekundäransicht des Rahmens groß genug ist, diese Berührungen sind, und sehen, ob es die Berührungen meldet, sobald sie auftreten. Wenn nicht, könnte meine Vermutung richtig sein. Wenn ja, na ja, Sie immer noch nützliche Informationen bekommen -. Und Sie könnten in der Lage sein, einfach die Noten auf dieser Ebene zu erfassen, statt sie bis Warteschlange

Wenn diese Vermutung richtig ist, die am wenigsten Hacky fix ich denken kann Ihre Netzwerk-Operationen asynchron machen würde.

Wenn Sie das nicht tun wollen, können Sie auch versuchen, eine NSTimer mit der Netzwerk-Aktivitätsanzeige zu verlassen, für den Bruchteil einer Sekunde nach dem synchrone Aufruf abgeschlossen ist. Auf diese Weise Ihre Responder-Kette könnte die Warteschlange eingehenden berührt räumen, und sie ignoriert, wenn diese das gewünschte Verhalten ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top