Ich habe eine UIButton in einer UITableView Zelle, in einem UITableView. Das Ergebnis ist eine Liste mit Schaltflächen. Wenn die UIB-Taste gedrückt wird, ruft sie eine touchUpInside-Methode auf, und alles ist großartig. Worauf ich Probleme habe, ist, dass ich eine neue Ansicht aus der Position (Rahmen) der Schaltfläche verkleinern möchte, wenn sie gedrückt wird. Wenn ich nur die Grenzen desEine UIButton in einer UITableViewCell & bekommen Grenzen/frame
UIButton bekommenorigButton.frame
ist es in den Koordinaten des UITableCell, so etwas wie 3,50,40,25. Dies ist für alle Schaltflächen in der Liste gleich, also egal welche Schaltfläche in der Liste gedrückt wird, dann bekomme ich diese Koordinaten. Nun, wenn ich tatsächlich die Koordinaten meiner Ansicht
self.frame
greifen, wenn die touchUpInside Methode aufgerufen wird, bekomme ich etwas mehr verwendbar. Ich bekomme dann die Koordinaten meiner Zelle. Groß!! So kann ich eine neue Ansicht aus dem UIButton herauszoomen. Groß!!
Aber hier ist das Problem: Wenn Sie die Liste nach oben scrollen, tippen Sie auf die Schaltfläche, die Ansicht zoomt nicht von der Schaltfläche, sondern von einer Stelle unterhalb des Bildschirms. Das Problem ist, dass die Koordinaten, die ich habe, für die Zelle sind, BEVOR es gescrollt wird. Tatsächlich spiegeln alle Koordinaten für alle Zellen ihre tatsächlichen Positionen in der Tabelle wieder, wobei nur die Koordinaten der ersten sichtbaren Menge verwendbar sind. Scrollen hat diese Koordinaten nicht geändert.
Ich dachte, vielleicht könnte ich die Koordinaten der Super View verwenden, aber diese sind nicht hilfreich.
Wer weiß, wie man genaue Koordinaten für Schaltflächen (oder Ansichten oder andere Elemente) erhält, die in einer Tabelle aufgelistet sind, oder ist das nicht möglich?
Hier ist, wie ich den Mittelpunkt meiner neuen Ansicht berechnen:
floatingView.center = CGPointMake(origButton.frame.origin.x +
origButton.frame.size.width/2,
self.frame.origin.y + self.superview.frame.origin.y);
Dank!
Ich war so aufgeregt, als ich das sah. Die zurückgegebenen Koordinaten sind jedoch dieselben wie für self.frame. (Ich habe UITableViewCell subklassifiziert, und die Touch-Methode meines UIButtons ist innerhalb der Unterklasse.) Das oben genannte war ein Drop-in-Ersatz für self.frame. Hier ist ein Beispiel von Werten: Ein Klick auf eine Zelle in der ersten „Seite“ der Tabelle: 0,158,32,480 Klick auf eine Zelle weiter unten: 0,222,32,480 die Tabelle Scrolling Zellen unten zu offenbaren, und dann Klick auf einen: 0,2238,32,480 Irgendwelche anderen Gedanken? – mahboudz
Ich habe die Antwort aktualisiert, um dies zu berücksichtigen –
Vielen Dank. Das ist es! Hier ist die Art, wie ich es benutzt habe: CGRect cellFrame = [self.superview convertRect: self.frame toView: tableViewController.view]; – mahboudz