Wie bekomme ich den tap-Koordinaten auf eine benutzerdefinierte UIButton?
Ich bin mit XCode 4.4 für die Entwicklung für iOS 5 auf einem iPad und bin mit dem Storyboard-layout beim erstellen meines custom-Taste.
Habe ich die touch-event korrekt arbeiten und die Protokollierung aber jetzt möchte ich, um die x/y-Koordinaten der Berührung auf meiner custom-Taste.
Wenn möglich, möchte ich die Koordinaten werden relativ zur Schaltfläche "Benutzerdefiniert" statt relativ zu den gesamten iPad-Bildschirm.
Hier mein code in der .h-Datei:
- (IBAction)getButtonClick:(id)sender;
und mein code in der .m-Datei:
- (IBAction)getButtonClick:(id)sender {
NSLog(@"Image Clicked.");
}
Wie gesagt, das ist korrekt protokolliert, wenn ich Tippen Sie auf das Bild.
Wie kann ich die Koordinaten von dem Hahn?
Habe ich versucht, ein paar verschiedene Beispiele aus dem internet, aber Sie immer frieren, wenn es zeigt eine Reihe von zahlen (vielleicht die Koordinaten) in der Protokoll-box. Ich bin SEHR neu in iOS-Entwicklung, so stellen Sie es bitte so einfach wie möglich. Danke!
- Warum brauchst du Koordinaten?
- Artern ist das stellen der richtigen Frage. Tun Sie wirklich wissen müssen, um die Koordinaten innerhalb einer Taste, oder willst du einfach nur wissen, auf welche Schaltfläche geklickt wurde (in welchem Fall Sie nicht brauchen, Vladimir hervorragenden Vorschlag "Sender-und-Ereignis"), sondern Sie können schauen Sie sich einfach die
sender
um festzustellen, auf welche Schaltfläche geklickt wurde. - Ich brauche die Koordinaten ich bin wegen Anzeige eines Bildes als ein UIButton und ich muss wissen, wo auf diesem Bild die Benutzer erschlossen. Ich weiß schon, wie zu sagen, welche Schaltfläche geklickt wurde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu erhalten, berühren Sie Speicherort, den Sie verwenden können, eine weitere Variante der button action Methode:
myAction:forEvent:
(wenn Sie es schaffen, aus IB-Schnittstelle Hinweis "sender-und event" - option in der "Argumente" - Feld: )Dann in Ihrem action-handler, den Sie bekommen können, berühren Sie Standort von event-parameter, zum Beispiel:
[button addTarget:self action:@selector(myAction:forEvent:) forControlEvents:UIControlEventTouchUpOutside]
Incase Swift 3.0 die akzeptierte Antwort funktioniert gleich, außer syntax wird wie folgt geändert:
Swift 3.0:
Für Ihre Allgemeine Koordinaten (mit Verweis auf den Bildschirm), müssen Sie erstellen eine
CGPoint
enthält die Koordinaten Ihrer Berührung. Aber um das zu tun, müssen Sie Holen Sie sich, dass touch-ersten. So starten Sie, indem Sie den touch-event, dann indem Sie diesen Punkt mit derlocationInView
Methode. Nun, je nachdem, Wann Sie sich einloggen möchten die touch - wenn der Benutzer berührt nach unten, oder, wenn Sie heben Sie Ihren finger, implementieren Sie diesen code intouchesBegan
odertouchesEnded
Methode. Lassen Sie uns sagen, Sie tuntouchesEnded
, die übergibt ein NSSet cales "berührt", die alle touch-events."touchPoint" enthält nun der Punkt, an dem der Benutzer den finger anhebt. Drucken Sie sich die Koordinaten, die Sie gerade auf den x-und y-Eigenschaften, die zeigen:
Sollte die Ausgabe der Koordinaten des touch. Jetzt haben Sie referenziert werden, um beliebige Taste, die Sie verwenden, ich würde dir nur empfehlen manuell zu subtrahieren Sie die Werte für die Schaltfläche werden die Koordinaten von dem Punkt. Es scheint wie eine einfache Lösung, und ehrlich gesagt, ich don T wissen, ein Weg, um die Koordinaten mit Bezug zu einem anderen Objekt, es sei denn, Sie machen eine Sicht auf das Objekt und übergeben es an
locationInView
stattself.view
.Weitere Infos auf Berührungen, es gibt eine große Reihe von tutorials hier.