Wie finde ich heraus, in welcher Ansicht ein Touch-Event endete?
Ich möchten, ziehen Sie ein UIImage auf eine von mehreren UIButtons und haben es neu positioniert, basierend auf dem button, den ich ziehen Sie es auf.
Das problem, das ich habe ist, dass UITouch nur die Datensätze anzeigen, wo mein touch begann, würde ich gerne den Zugriff auf die Ansicht meine Note endet. Wie kann ich dies tun?
Code:
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
dealerBtnOrigin = [touch locationInView:self.view];
//NSLog(@"%u %u",touch.view.tag, ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]).tag);
//CHECK TO SEE WHICH BUTTON WAS TOUCHED
if (touch.view == ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]))
{
((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]).center = location;
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
if (touch.view == ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]))
{
((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]).center = location;
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
UIView *endView = [self.view hitTest:location withEvent:nil];
if (touch.view == ((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]))
{
NSLog(@"%u %u",endView.tag, touch.view.tag);
if([buttons containsObject:(UIButton *)endView])
{
[[dealerBtns objectAtIndex:[table getButtonSeat]] setHidden:YES];
[table passButton:touch.view.tag];
[[dealerBtns objectAtIndex: touch.view.tag] setHidden:NO];
}
((UIView *)[dealerBtns objectAtIndex:[table getButtonSeat]]).center = dealerBtnOrigin;
}
}
Kommentar zu dem Problem
Ich glaube nicht, dass ich gehen kann mit einer manuellen Lösung mit CGPoint koordiniert, um herauszufinden, welche Schaltfläche die ist, wie ich bin mit mehreren storyboards für verschiedene Bildschirmgrößen/Geräte.
InformationsquelleAutor der Frage Deco | 2013-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sehr leicht zu erkennen, Ihre endlich berührten Blick, versuchen Sie diesen code
InformationsquelleAutor der Antwort Thilina Chamin Hewagama
Verwenden, hit-testing. Sie wissen, wo sich dieser Punkt als ein CGPoint in Bezug auf die ultimative superview,
self.view
. Dann können Sie Fragenself.view
welche seiner Untersichten, der Punkt ist:Den UIView
v
ist die Ansicht, die Sie suchen.InformationsquelleAutor der Antwort matt
Im Allgemeinen, brauchen Sie, um die Stelle, wo die Berührung endete, und festzustellen, ob es liegt in der Ansicht, die Sie interessiert sind in. Ich mache das mithilfe von code ähnlich der folgenden:
(dieser code bearbeitet wurde on-the-fly zu nehmen, eine Menge von irrelevanten Sachen, aber ich halte eine Liste möglicher drop-Ziele in dropTargets, und dies ist nur der Blick auf die Liste, um zu sehen, welche der möglichen UIViews enthalten könnte).
Das wichtigste ist, dass, wenn Sie wissen, die Ansicht oder Ansichten aus, die Sie sind potenziell ziehen Sie das Element an, dann können Sie festlegen, ob das view-frame enthält den Punkt mit CGRectContainsPoint. Die wichtige Sache im Auge zu behalten, Sie liegen in verschiedenen Koordinaten-Systemen, und es kann notwendig sein, zu konvertieren von einem zum anderen, bevor Sie Ihren Vergleich.
InformationsquelleAutor der Antwort RegularExpression
Vorausgesetzt, es gibt eine
@property
von der target-Ansicht in Ihrem container, und die target-Ansicht zum container Hinzugefügt wird:InformationsquelleAutor der Antwort Yevhen Dubinin
swift 4:
override func touchesEnded(_ Berührungen: Set event: UIEvent?) {
//gehen..
}
InformationsquelleAutor der Antwort ingconti