Frage

Ich habe meinen ersten Ausflug in Cocoa Touch-Programmierung (und einen meines ersten in Cocoa im Allgemeinen) und ein einfaches Spiel für das iPhone zu schreiben, obwohl diese Frage zu allgemein Kakao Touch ist.

Das Haupt UI besteht aus einem Streifen von identischen wirkenden Tasten (nur in der Farbe variierenden) angeordnet ist horizontal über den Bildschirm. Obwohl sie wie Knöpfe handeln müssen sie ein benutzerdefiniertes gezeichnet Aussehen haben. Jeder reagiert Ereignisse in der gleichen Art und Weise zu berühren, Auslösen andere Ereignisse in der Anwendung.

Ich mag eine benutzerdefinierte Ansicht definieren, zum Teil mehr Kontrolle über das Verhalten haben als nur eine Reihe von Standard-Tasten aufweisen und teilweise mehr über Kakao-Programmierung zu erlernen.

  • sollte ich definieren eine Hauptansicht mit einer Reihe von Subviews von denen jeder sich zieht und leitet Ereignisse berühren? Jede Taste sollte einen gedrückten Zustand wie Show Standard Dinge tun, wenn sie berührt und so weiter . Gibt es bereits vorhandenen Behälter Ansichten für diese Art von Szenario?

  • Oder sollte ich definieren nur eine Hauptansicht, die den ganzen Streifen und erkennt zieht, wo eine Berührung stattfindet ich das Gefühl, ist ein schlecht entwickelt Ansatz - ich sollte nicht Programmierung Treffertest werden Code.


Edited die Frage

klären
War es hilfreich?

Lösung

Der leichte Ansatz ist Subschichten auf Ihre UIView der Ebene hinzuzufügen. Verwenden hitTest: zum Versand berührt erhalten Sie auf Sie UIView zum CALayer Beispiel, dass der Bedarf, sie zu empfangen

.

Wenn Sie mehr von dem UIResponder Verhalten benötigen (touchesBegan etc.), können Sie mit Subviews statt Subschichten gehen, wie die Sie erlauben würde, die Ereignisse direkt in den Objekten zu behandeln, anstatt sie von einem zentralen Responder versenden mit (dein Haupt UIView).

Folglich kann das wesentliche Bit sein, wie viel von dem Verhalten mit einzelnen Tasten verbunden sind, sollten von der Haupt UIView bekannt (behandelt) werden. Wenn es Sinn macht, alles von einem zentralen Ort kontrolliert hat, können Sie alle die Logik in der UIView setzen und nur Sublayer für leichte Anzeigezwecke verwenden. Wenn es mehr Sinn macht, sich das Verhalten in die Tasten zu setzen, shoudl sie UIResponders und als solche Unterklasse UIView sein und als Subviews Ihrer Hauptansicht hinzugefügt werden.

Andere Tipps

Sie sollten eine Reihe von Subviews verwenden -. Auf diese Weise jede „Knopf“ Klasse weiß, wie sie zu ziehen und seine Superview (Ihre sagte: „Hauptansicht“) legt die Tasten, wo sie gehen müssen

Und zweitens auf der NDA. Nur reden über das iPhone

Wenn Sie eine Menge von Tasten haben und wollen mit ihnen Lust, Dinge zu tun, empfehle ich mit Schichten . Ihre UIView wird handhaben, welche Ebene der Interpretation hatte die Berührung (Treffertests) und  Richtig reagieren. Wenn alles tun Sie ist die Verwaltung einer ganze Reihe von Tasten mit verschiedenen Effekten und Animationen, könnte dies ein einfacher Weg sein.

Wie für schlechte Technik, gar nicht. Wenn Sie einen Blick auf den zugehörigen Führungen nehmen, werden Sie Core Animation und Schichten sehen Treffertests erfordern (obwohl das relativ einfach ist), aber es ist viel sauberer als die UIView alle die Zeichnung zu tun und effizienter als viele Subviews. Es rutscht direkt zwischen den beiden Ansätzen schön.

Vollständige Offenlegung:. Ich Einwickeln nur meinen Kopf herum, wie man am besten Hebelwirkung dieses Zeug selbst, aber für kompliziertere interaktive Steuerelemente

Sie können Layout Ihrer Ansicht im Interface Builder. Ziehen Sie einfach ein paar UIButtons in Ihrer View-Controller-Ansicht.

reagieren auf Ereignisse, definieren Sie eine IBAction in Ihrem View-Controller und verbinden Sie die Tasten zu.

Das ist alles sehr einfach. Ich schlage vor, wirklich, dass Sie zumindest Spaziergang durch die iPhone-Programmierung Einführung, dass Apple Online hat. Es soll Ihnen beibringen, iPhone und Interface Builder Grundlagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top