Ich arbeite an einer Grafikrechner-App für das iPad, und ich wollte eine Funktion hinzufügen, mit der ein Benutzer auf einen Bereich in der Diagrammansicht tippen kann, um ein Textfeld mit der Koordinate des von ihnen berührten Punkts anzuzeigen. Wie kann ich einen CGPoint daraus erhalten?Wie bekomme ich einen CGPoint von einem geklopften Ort?
Antwort
Sie haben zwei Art und Weise ...
1.
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
}
hier können Sie Lage mit Punkt aus jetziger Sicht bekommen ...
2.
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setDelegate:self];
[self.view addGestureRecognizer:tapRecognizer];
Hier wird dieser Code verwendet, wenn Sie etwas mit Ihrem Objekt oder einer Unteransicht Ihrer Hauptansicht tun möchten
Diese
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
// Get the specific point that was touched
CGPoint point = [touch locationInView:self.view];
NSLog(@"X location: %f", point.x);
NSLog(@"Y Location: %f",point.y);
}
Sie verwenden können „touchesEnded“ Versuchen Sie, wenn Sie lieber sehen würde, wo der Benutzer aus dem Bildschirm mit dem Finger gehoben statt, wo sie aufsetzten.
Falls Sie ein UIGestureRecognizer
oder UITouch
-Objekt verwenden, können Sie die locationInView:
Methode verwenden, um die CGPoint
innerhalb der gegebenen Ansicht der Benutzer berührt abzurufen.
Es ist wahrscheinlich besser und einfacher, einen UIGestureRecognizer mit der Kartenansicht zu verwenden, anstatt zu versuchen, eine Unterklasse zu erstellen und Berührungen manuell abzufangen.
Schritt 1: Fügen Sie zunächst die Gestenerkenner in die Kartenansicht:
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tapGestureHandler:)];
tgr.delegate = self; //also add <UIGestureRecognizerDelegate> to @interface
[mapView addGestureRecognizer:tgr];
Schritt 2: Als nächstes implementieren shouldRecognizeSimultaneouslyWithGestureRecognizer und zurück JA so Ihr Leitungs Gestenerkenner zur gleichen Zeit wie die Karte arbeiten können (sonst tippt auf den Stift wird nicht automatisch von der Karte behandelt werden):
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer
:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
Schritt 3: Schließlich die Geste Handler implementieren:
- (void)tapGestureHandler:(UITapGestureRecognizer *)tgr
{
CGPoint touchPoint = [tgr locationInView:mapView];
CLLocationCoordinate2D touchMapCoordinate
= [mapView convertPoint:touchPoint toCoordinateFromView:mapView];
NSLog(@"tapGestureHandler: touchMapCoordinate = %f,%f",
touchMapCoordinate.latitude, touchMapCoordinate.longitude);
}
func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
print("tap working")
if gestureRecognizer.state == UIGestureRecognizerState.Recognized {
`print(gestureRecognizer.locationInView(gestureRecognizer.view))`
}
}
Ich will nur in einer Swift 4 Antwort werfen, weil die API ganz anders aussehende ist.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = event?.allTouches?.first {
let loc:CGPoint = touch.location(in: touch.view)
//insert your touch based code here
}
}
ODER
let tapGR = UITapGestureRecognizer(target: self, action: #selector(tapped))
view.addGestureRecognizer(tapGR)
@objc func tapped(gr:UITapGestureRecognizer) {
let loc:CGPoint = gr.location(in: gr.view)
//insert your touch based code here
}
In beiden Fällen loc
den Punkt enthalten, die in der Ansicht berührt wurde.
- 1. Wie bekomme ich Trends von Twitter zu einem bestimmten Ort?
- 2. Ich bekomme einen falschen Ort, wenn ich app
- 3. Wie bekomme ich den Ort - php
- 4. Wie bekomme ich einen direkten Link zu einem Ort auf Google Maps mit der Orts-ID
- 5. Wie bekomme ich den Ort eines Amazon Echo von einem Alexa Skill
- 6. Wie bekomme ich einen Wert von einem Generator in Python?
- 7. Wie bekomme ich einen Thread-Status von einem anderen Thread?
- 8. Wie bekomme ich einen xpathContext von einem xmlNode in Python
- 9. Wie bekomme ich einen FILE-Zeiger von einem Dateideskriptor?
- 10. Wie bekomme ich einen bestimmten Wert von einem JSON?
- 11. Wie bekomme ich einen InputStream von einem BufferedImage?
- 12. Wie bekomme ich einen FILE * -Stream von einem Dateideskriptor?
- 13. Wie bekomme ich einen MemoryStream von einem Stream in .NET?
- 14. Wie bekomme ich einen Dateinamen von einem Pfad?
- 15. Wie bekomme ich Variablen von einem Objekt?
- 16. Wie verschiebe ich Datei von einem Ort zu einem anderen Ort in Java?
- 17. Wie bekomme ich einen Text von SearchView?
- 18. Wie bekomme ich die Anzahl der "Likes" von deinen Freunden für einen bestimmten Ort?
- 19. Wie benötige ich Ruby Gem von einem bestimmten Ort?
- 20. Wie wird die Datei von einem Ort an einen anderen Ort kopiert?
- 21. Wie bekomme ich Metadaten von einem Bild?
- 22. Wie bekomme ich den letzten Ort auf Glas zuverlässig?
- 23. Wie bekomme ich HttpServletRequest in einem HttpSessionListener?
- 24. So verschieben Sie vier Bilder von einem Ort zu einem anderen Ort horizontal in
- 25. Wie bekomme ich einen Text von EditText?
- 26. Wie bekomme ich einen Wert von optarg
- 27. Wie erstelle ich einen UItapGesture Recognizer zu einem CGpoint für eine Schaltfläche
- 28. Wie erstellt Enum mit Rohtyp von CGPoint?
- 29. Wie bekomme ich einen temporären Dateinamen?
- 30. Wie kann ich mit Core Graphics einen Kreis an meinem Touch-Ort zeichnen?
Dies ist eine schöne vollständige Antwort –