这是关于我的位置的更多信息...我有一个表格视图,当您触摸表格视图中的单元格时,它会在窗口中添加一个名为 DraggableView 的自定义视图,其位置与您选择的表格视图行完全相同,并且大小相同.
编辑:这是我将 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);
}
我需要的是这个新创建的 Draggable View 当用户的手指仍然在行的顶部时具有用户的“焦点”。这是为了让可拖动视图在创建后就可以拖动。
现在发生的事情是创建了可拖动视图,但我必须松开手指,然后点击可拖动视图以平移它。我希望跳过释放手指并触摸视图的步骤,这样我就可以在创建它后拖动它。有任何想法吗?