2012-04-05 8 views
2

Bitte helfen Sie mir Benutzerinteraktion zu deaktivieren. Ich habe eine benutzerdefinierte Ansicht, die für mehrere Sekunden auf der obersten Ebene der Ansichtshierarchie angezeigt wird. Unter der Ansicht befinden sich mehrere Schaltflächen. Das Problem ist, dass Schaltflächen Berührungsereignisse erfassen, wenn der Benutzer auf Ansicht klickt. Ich habe myCustomView.userInteractionEnabled = NO gesetzt; Und nichts passiert. Schaltflächen fangen Ereignisse durch die Ansicht gleich. Wie erstelle ich eine Ansicht, die keine Berührungen durchlässt?Benutzerinteraktion durch Ansicht Problem

Antwort

0

Wenn myCustomView auf der obersten Ebene der Ansichtshierarchie ist, stelle ich mir vor, dass Sie versuchen, etwas wie eine Überlagerungsansicht zu implementieren, die die anderen Ansichten transparent abdeckt. In diesem Fall führt die Einstellung userInteractionEnabled = NO in dieser Ansicht dazu, dass Berührungsereignisse an die folgenden Ansichten weitergeleitet werden.

Der korrekte Weg besteht darin, userInteractionEnabled = YES auf Ihre benutzerdefinierte Ansicht zu setzen, dann erstellen Sie entweder eine transparente Schaltfläche, um Touch auf eine ablehnende IBAction umzuleiten, oder sie zu ignorieren.

0

Sie könnten nur deaktivieren Benutzer-Interaktion auf einer gemeinsamen Super der Tasten:

someButton.superview.userInteractionEnabled = NO; 

Eine andere Möglichkeit, Benutzeroberfläche zu deaktivieren, während einige Overlay UI oben ist ist das Overlay in einem eigenen Fenster auf statt setzen von die vorhandenen Ansichten.

0

Verwendung:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]

für die Benutzerereignisse zu ignorieren. Und nach wenigen Sekunden und Ihre Ansicht verschwindet, können Sie verwenden:

[[UIApplication sharedApplication] endIgnoringInteractionEvents]

diese Weise können Sie Ihr Problem lösen können.

Verwandte Themen