Position eines View innerhalb einer Table ?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Position eines View innerhalb einer Table ?

    Hi,

    ich habe eine Tableview auf einem viewcontroller. Jede Cell hat dabei 4 Views nebeneinander. Jede der 4 Views hat einen TapGestureRecognizer.

    Nun benötige ich die Position des angetippten Views - aber im Koodinatensystem vom superview, also meines viewcontrollers.

    Quellcode

    1. UIView* view = gestureRecognizer.view;
    2. CGPoint loc = [gestureRecognizer locationInView:view];
    3. UIView* subview = [view hitTest:loc withEvent:nil];
    4. CGRect animatedViewFrame = [subview convertRect:subview.frame toView:self.view];


    --> bei diesem Code ist die Position des jeweils linken view einer cell richtig. bei den anderen 3 views ist die x-Koordinate falsch?

    Danke!
  • Wenn jeder Recognizer in einer anderen View hängt, bekommest Du mit "locationInView:view" doch immer nur die relativen Positionen der Gesten. Warum nutzt Du hier nicht die contentView der UITableViewCell? Dann kannst Du Dir das anschließende Konvertieren doch schenken ... wobei ich das Hit-Testing ehrlich gesagt nicht verstanden habe.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Die Table ist nur Teil des gesamten Viewcontrollers, sagen wir ein Drittel des gesamten Bildschirms.
    Eine Cell/Zeile dieser Table hat diese 4 Views nebeneinander. Es gibt auch mehrere Zeilen.

    Wenn der User scrollt sind die Zeilen und somit auch die 4 Views innerhalb des Bildschirms woanders positioniert.

    Das alles habe ich im Storyboard designed.

    Tippt der user auf einen dieser views möchte ich per animation diesen view ausserhalb der table positionieren. Daher benötige ich die aktuelle position auf dem gesamtscreen.

    @Mattes: hit-test mache ich, damit ich den aktuellen view habe, den der user angetippt hat.

    Hoffe es ist etwas verständlicher geworden....
  • danyball schrieb:

    @Mattes: hit-test mache ich, damit ich den aktuellen view habe, den der user angetippt hat.

    Aber wenn jeder Recognizer an einer anderen View hängt, weißt Du beim Tap doch abhängig vom Recognizer, welche es war. Und wenn nicht, gibt es immer noch das view-Property. Würde es nicht mehr Sinn machen, die Tabellenzeile eines Taps zu ermitteln und innerhalb der ContentView die Position?

    Aber vielleicht durchschaue ich Dein Vorgaben nicht richtig, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    Würde es nicht mehr Sinn machen, die Tabellenzeile eines Taps zu ermitteln und innerhalb der ContentView die Position?


    Du, durchaus... bin für jeden Tipp dankbar. Klingt für mich jetzt auch schlüssig was du schreibst.

    So klappt es bei mir nicht, bricht mit "unrecognized selector" ab:

    Quellcode

    1. A_TableViewCell *cell = (A_TableViewCell*)gestureRecognizer.view;
    2. CGPoint loc = [gestureRecognizer locationInView:cell.contentView];
  • Ohne den sinn jetzt weiter verfolgt zu haben, ist diese Zeile hier falsch

    Quellcode

    1. CGRect animatedViewFrame = [subview convertRect:subview.frame toView:self.view];


    subview.frame ist im Koordinaten-Raum von subview.superview du benutzt es aber als wäre es im Koordinaten-Raum von subview.

    Besser wäre folgendes. (Oder du nimmst subview.superview und frame, kommt auf das gleiche raus, wenn du keine Transformationen oder so auf das View anwendest)

    Quellcode

    1. CGRect animatedViewFrame = [subview convertRect:subview.bounds toView:self.view];