5 Stimmen

Wie kann ich eine IBAction-Methode an eine einfache Ansicht für ein Touch-Up-Ereignis anhängen?

Ich habe ein leeres neues ansichtsbasiertes Anwendungsprojekt in Xcode erstellt. Es generiert eine myProjectViewController und eine nib für es. In dieser Nib für diesen Viewcontroller gibt es nur eine Ansicht. Ich wollte einige Ereignisbehandlungen testen und habe eine -(IBAction)-Methode erstellt, die einfach ein "Hallo Welt" protokolliert, wenn ich den View berühre. Aber aus irgendeinem Grund gibt mir IB keine Möglichkeit, die Aktion zu verknüpfen. Was mache ich da falsch? Ich habe auch versucht, eine UIView als Unteransicht dort zu platzieren. Wenn ich von dort zum File's Owner ziehe (dessen Klasse der myProjectViewController ist, wo ich die IBAction in der Kopfzeile habe), wird die IBAction nicht einmal erwähnt. Aber es sollte doch eigentlich, oder?

19voto

Nishant Punkte 12335

Es gibt eine einfache Möglichkeit, dies zu erreichen. Gehen Sie zu Ihrem Interface Builder Ihrer Klasse >> Wählen Sie die Ansicht aus, zu der Sie eine Aktion hinzufügen möchten >> ändern Sie dann die benutzerdefinierte Klasse von IDENTITY INSPECTOR von UIView zu 'UIControl'. Jetzt können Sie jede IBAction-Methode zu dieser Ansicht hinzufügen.

Change class to UIControl

add IBAction event to this view to perform action method

2 Stimmen

Das ist die einfachste Antwort auf dem Brett, und sie funktionierte wie ein Zauber. Sie sollte an der Spitze stehen! Danke!

1 Stimmen

In meinem Fall habe ich eine benutzerdefinierte UIView-Unterklasse verwendet. Ändern Sie einfach die Basisklasse in UIControl und schon sind Sie zufrieden! Danke!

6voto

Jon Hess Punkte 14197

IBAction ist lediglich ein Tag, das Sie einer Methodendeklaration hinzufügen und das diese Methode als Kandidat für die Verbindung mit der Aktion eines Steuerelements kennzeichnet.

Eine IBAction-Methode ist die Methode, die die Aktionsnachricht eines anderen Steuerelements empfängt.

UIViews senden keine Aktionen. UIControls schon. Es gibt also nichts, was Sie von einer einfachen UIView an Ihr Objekt anschließen könnten. Sie können nur IBActions an UIControl-Unterklassen und UIBarButtonItems anschließen.

3voto

lostInTransit Punkte 69377

Zu diesem Zweck gibt es die Methoden touchesBegan, touchesMoved und touchesEnded.

0voto

Jason Punkte 27030

IBAction sind Methoden, die dazu dienen, eine Aktion von einem Steuerelement zu empfangen. Sie sind kein Hinweis für Interface Builder, dass die Methode die Quelle einer Aktion ist (die die Klasse als Reaktion auf andere Ereignisse erzeugt).

Um benutzerdefinierte Ereignisse von einer UIView-Unterklasse zu verdrahten, siehe meine Antwort auf eine verwandte Frage aquí . Sie müssen den Delegat/Protokoll-Ansatz verwenden.

0voto

visakh7 Punkte 26330

Ich denke, Sie können die Methode touchesBegan oder touchesEnded verwenden, wie @lostInTransit vorgeschlagen hat. Es ist der richtige Weg, anstatt es als die Ansicht als eine Schaltfläche zu machen.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

// do something here

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X