Hier ist eine weitere Information zu meiner Sitation ... Ich habe eine Tabellenansicht, die, wenn Sie eine Zelle in der Tabellenansicht berühren, fügt eine benutzerdefinierte Ansicht namens DraggableView in das Fenster an der gleichen Position wie die Tabellenansicht Zeile, die Sie ausgewählt haben, und die gleiche Größe.Wie lege ich eine Ansicht als First Responder fest, nachdem ich eine Tableview-Zelle berührt habe?
EDIT: So habe ich die Unteransicht DraggableView zur Ansicht hinzugefügt. Dieser Code ist auf der benutzerdefinierten tableviewcell Klasse:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UIView *topmostView = [[[super superview] superview] superview];
UITableView *parentTableView = (UITableView *)[self superview];
CGPoint draggablePoint = parentTableView.frame.origin;
CGSize draggableSize = parentTableView.frame.size;
draggablePoint.y += indexPath.row * 44;
dragView.frame = CGRectMake(draggablePoint.x, draggablePoint.y, draggableSize.width, 44);
[topmostView addSubview:dragView];
}
Diese ziehbar Ansicht gemacht wird, so dass es ziehbar ist. Auf seinem designierten Initialisierer fügt er der Ansicht einen UIPanGestureRecognizer hinzu, so dass Sie ihn herumschwenken können. Ich tue dies, wie so:
- (void) activatePan {
UIPanGestureRecognizer *pan =
[[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMove:)] autorelease];
[self addGestureRecognizer:pan];
}
- (void) panMove:(UIPanGestureRecognizer*)recognizer {
CGPoint touchLocation;
if (recognizer.state == UIGestureRecognizerStateBegan) {
currentFrame = self.frame;
touchLocation = [recognizer locationInView:self];
}
CGPoint translatedPoint = [(UIPanGestureRecognizer*)recognizer translationInView:self];
//The object is being moved across the screen
self.frame = CGRectMake(currentFrame.origin.x + translatedPoint.x, currentFrame.origin.y + translatedPoint.y, currentFrame.size.width, currentFrame.size.height);
}
Was ich brauche, ist für diese neu Ziehbare Ansicht erstellt den „Fokus“ des Benutzers, wenn seine Finger immer noch an der Spitze der Reihe ist. Dies ist so, dass die ziehbare Ansicht nach der Erstellung ziehbar ist.
Was ab sofort passiert, ist, dass die ziehbare Ansicht erstellt wird, aber ich muss meinen Finger loslassen und auf die ziehbare Ansicht tippen, um sie zu verschieben. Ich möchte den Schritt des Loslassens des Fingers überspringen und die Ansicht berühren, damit ich sie ziehen kann, sobald sie erstellt wurde. Irgendwelche Ideen?
Ich habe das versucht, meine DraggableView wird nicht FirstResponder .... Ich glaube, ich missbrauchte das Wort "Ersthelfer" auf meine Frage. – LilDwarf
Ah, ja, es hat eine sehr spezifische Bedeutung. Ich denke, ich verstehe, was Sie jetzt meinen, aber können Sie Ihren relevanten Code hinzufügen, um es einfacher zu machen, was los ist? – rosslebeau
Ich habe die Frage bearbeitet, um etwas Code hinzuzufügen, es kann dir helfen, es besser zu verstehen :) – LilDwarf