2016-06-27 5 views
0

Ich versuche, eine UIPickerViewiOS: UIView blockiert die Anwenderwechsel aber nicht, dass es subview

Ich habe anpassen eine UIView-Unterklasse, die Hauptansicht ist.

Und es gibt eine Maskenansicht für Unschärfe oder dunkler Hintergrund Zweck, ich habe es in der Hauptansicht hinzugefügt.

Dann gibt es die Picker-Ansicht, ich habe es der Maskenansicht als Unteransicht hinzugefügt.

Die Hierarchie ist einfach wie

--mainview

| - maskview

|| - pickerview

Endlich füge ich die ganze Ansicht zum Anwendungsschlüsselfenster hinzu.

Meine Frage ist, jedes Mal, wenn ich diese Hauptansicht zeige, möchte ich, dass die Maskenansicht Benutzerinteraktionen blockiert, daher kann der Benutzer nicht außerhalb der Auswahlansicht klicken.

Aber wenn ich den userinteractive der Maskenansicht auf Nein festlegen, blockiert es auch die Bildlaufansicht scrollt und berührt.

Wie kann ich die Superview so implementieren, dass sie nicht interaktiv ist und ihre Subview interaktiv ist?

Danke.

Antwort

0

1. Set Super nicht interaktiv zu sein:

Yoursuperview.userInteractionEnabled=NO; 

2. Set subview interaktiv sein:

Dann durchlaufen Subviews Ihrer Superview und Set Benutzerinteraktion auf JA wie unten:

for (UIView* view in YourSuperView.subviews) { 

    if ([view isKindOfClass:[/*"which ever class of your subviews "*/ class]]) 

     [view setUserInteractionEnabled:YES]; 

} 

OR

Set setUserInteractionEnabled auf alle Subviews Ihrer Super

for (UIView* view in YourSuperView.subviews) { 

    [view setUserInteractionEnabled:YES]; 

} 

ODER

Yoursuperview.userInteractionEnabled=NO; 

[[yourSuperView subviews]makeObjectsPerformSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:FALSE]]; 

prüfen hier für weitere Informationen: https://stackoverflow.com/a/11546963/5575752

0

standardmäßig, wenn Sie Ihre Maske Ansicht ist, reine UIView, wenn Sie eine Interaktion damit machen, ist nichts passiert. Andernfalls fügen Sie eine weitere reine UIView über Ihrer benutzerdefinierten Maskenansicht hinzu.

--mainview

| - customView-Benutzer kann interagieren (Ihre alte Maskenansicht, wenn es eine benutzerdefinierte ist)

|| - maskview

||| - picker

0

Stellen Sie die Hierarchie wie folgt aus:

--mainview

| - maskview

| - pickerview

Jetzt können Sie die userInteractionEnabled auf NO auf der Maskenansicht festlegen, ohne die Auswahl zu blockieren. Die Auswahlansicht muss unterhalb der Maskenansicht in der Dokumentkontur liegen, um sich vor der Maskenansicht zu befinden.