これが私の状況に関する詳細です...テーブルビュー内のセルに触れると、ドラッグ可能なビューと呼ばれるカスタムビューが、選択したテーブルビュー行とまったく同じ位置のウィンドウに追加され、同じサイズになります.
編集: DraggableView サブビューをビューに追加する方法は次のとおりです。このコードは、カスタム tableviewcell クラスにあります。
-(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];
}
このドラッグ可能なビューは、ドラッグできるように作成されています。指定された初期化子で、UIPanGestureRecognizer をビューに追加して、パンできるようにします。私はこれを次のようにします:
- (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);
}
私が必要とするのは、この新しく作成されたドラッグ可能なビューが、ユーザーの指がまだ行の上にあるときにユーザーの「フォーカス」を持つことです。これは、ドラッグ可能なビューが作成されるとドラッグ可能になるようにするためです。
これで、ドラッグ可能なビューが作成されましたが、指を離し、ドラッグ可能なビューをタップしてパンする必要があります。指を離してビューに触れるステップをスキップして、作成後にドラッグできるようにしたいと考えています。何か案は?