UIButton außerhalb einer View

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

  • UIButton außerhalb einer View

    Hallo Zusammen,

    Ich habe eine View die bei bestimmten Aktionen Buttons anzeigen soll. Diese Buttons liegen aus Designgründen (teilweise) außerhalb der View. Dadurch werden die Touch Methoden nicht getriggert.
    In dem angefügten Beispiel funktioniert nur der X Button und auch nur dann, wenn der touch im frame der View stattfindet. Obwohl ich das auch alles irgendwie nachvollziehbar finde, ist es dennoch unpraktisch :D

    Natürlich könnte ich einfach den Frame der View über die eigentliche View hinaus so vergrößern, so dass er die Buttons mit einschließt. Dass hat jedoch andere unangenehme Seiteneffekte. Gibt es einen Weg zu definieren, dass die Buttons ihre touches erhalten, auch wenn sie außerhalb des Views liegen?

    Vielen Dank.
    Bilder
    • Bildschirmfoto 2015-08-21 um 21.02.55.png

      33,39 kB, 418×223, 110 mal angesehen
  • Mac & i Test Abo
  • entweder machst du eine View clearColor und darin legst du deine View und die Buttons
    oder du schaust mal nach hitTest

    ich würde ne View erzeugen und da deine Buttons etc reinlegen
    bzw. das geht bei dir nicht weil du blaueView addSubview Button machst und den dann außerhalb positionierst, du kannst auch backgroundView addSubview Button, dann hast du das Problem nicht
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • Wenn du Auto-Layout verwendest kannst du die Zeichenfläche um das Layout-Rechteck über alignmentRectInsets vergrößern. Du musst dann nur in drawRect: über

    Quellcode

    1. CGRect theBounds = self.bounds;
    2. UIEdgeInsets theInsets = [self alignmentRectInsets];
    3. CGRect theInnerRect = UIEdgeInsetsInsetRect(theBounds, theInsets);
    das innere Rechteck zum Zeichnen berechnen und verwenden.
    „Meine Komplikation hatte eine Komplikation.“
  • ioscampus schrieb:

    Eine größere Superview kann man natürlich machen. Den Aufwand wollte ich halt sparen
    Sowohl MCDans als auch mein Vorschlag lassen sich in weniger als einer Stunde umsetzen.


    ioscampus schrieb:

    Gibt es keine Möglichkeit dem globalen Touch Händler zu sagen - gib mir nicht nur alle Touches in self.frame sondern im folgenden CGRect?
    UITapGestureRecognizer heißt das Zauberwort.

    Dafür wirst du deutlich länger brauchen und dein Programm wird an unerwarteten Stellen brechen. Wahrscheinlich verwendest du dann irgendwann doch einen der Vorschläge, weil dich irgendwann der Haufen Sonderfälle nervt. ;)
    „Meine Komplikation hatte eine Komplikation.“