Button kann in Subview nicht geklicht werden

MoFuRo

Jamba
Registriert
10.06.10
Beiträge
55
Hallo zusammen,

gerade bin ich etwas am verzweifeln warum ein Button in einer Subview nicht funktioniert. Meine Views sind so aufgebaut:

- PageController - UIViewController
- Page - UIView​
- Image - UIView​
- imageButton - UIButton​

Mein Problem ist jetzt das der Button auf der untersten Ebene nicht geklickt werden kann. Den Button habe ich im Code erstellt und ihm auch eine action gegeben. Eine Ebene höher, in der Page UIView funktioniert der Button. Woran könnte das liegen?

Danke!!!
 
na wenn der button unterhalb einer ganzen View liegt, diese sicherlich den Button verdeckt, funktioniert es net.
 
Ne, die Views sind verschachtelt. Da liegt keine über der anderen. Es lab aber daran das der Button keine Frame Größe hatte.

Jetzt würde mich noch interessieren wie ich es hinbekomme das die Subviews sich dem parent view anpassen. Ich habe es mit der autoresizingMask probiert aber das skaliert mir das Bild viel zu groß. Hat jemand eine Idee???
 
Was möchtest Du denn erreichen?

Wenn ich das richtig verstehe, hast Du eine PageView, darauf liegt ein UIImageView und darüber ein Button, ImageView und Button sollen so groß wie die PageView sein, korrekt?

Beim Erstellen der Subviews mußt Du für die übergeordnete View immer autoresizesSubviews = YES setzen.
Die untergeordneten Views müssen mit autoresizingMask = UIViewAutoreszingFlexibleWidth | UIViewAutoresizingFlexibleHeigth eingefügt werden.
Wenn Du die untergeordnete View anlegst, solltest Du initWithFrame verwenden und den Frame so wählen wie die Bounds der übergeordneten View, also:
subView = [[UIView alloc]initWithFrame:superView.bounds]

Dann sind alle Subviews immer so groß wie ihre superview.

Wenn das nicht so gewünscht ist, bau das Ganze mal im IB nach und mach Live Autoresizing an.
 
OK, das hat mir geholfen. Das nächste Problem ist nun das ich keine View mehr über alle anderen legen kann. Ich habe ungefähr 8 Views durch eine Schleife auf zur View hinzugefügt und jetzt will ich das die neunte über allen anderen liegt. Komischer weise liegt diese unter allen anderen, obwohl sie als letztes mit addSubview hinzugefügt wurde.

Hat jemand eine Ahnung woran das liegt?
 
Wenn das so wäre, wäre das ein Apfel-Bug. Temporärer Fix: [superview bringSubviewToFront:ViewNummer9].
 
Ich habe mir gerade die Position mit [[self subviews] indexOfObject:overlay] ausgegeben lassen und auch die der anderen Views. Das Overlay hatte den index 12 und alle anderen hatten einen niedrigeren Index. Ich habe auch schon versucht alle anderen Views mit [self sendSubviewToBack:Image]; nach hinten zu setzen. Alle anderen Views hatten dann den Index 0, aber das overlay bleibt trotzdem hinter diesen Views :-(

@Sebastato: auch das hat nicht geholfen.
 
Dann hast Du es wohl an die falsche Superview gehängt, poste doch mal den Code.

Setzt Du eventuell den zIndex von seinem Layer nochmal irgendwo?
 
Nach den zIndex hatte ich bereits gesucht, leider nicht gründlich genug. Es war noch in einer Zeile Code ein zIndex gesetzt. Dake ;-)