如何在触摸tableview单元格后指定视图作为第一响应者?

问题描述:

下面是我的观点更多信息...我有一个tableview,当你触摸tableview中的一个单元格时,它将一个名为DraggableView的自定义视图添加到窗口中与您选择的tableview行完全相同的位置,相同的尺寸。如何在触摸tableview单元格后指定视图作为第一响应者?

编辑:这是我如何将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); 
} 

我需要的是为这个新创建的可拖动查看有用户的“焦点”时,他的手指仍然是该行的顶部。这是为了让可拖动视图在创建后可拖动。
到目前为止发生的事情是,可拖动的视图已创建,但我必须松开手指,然后点击可拖动的视图以平移它。我希望跳过释放手指并触摸视图的步骤,以便在创建完成后拖动它。有任何想法吗?

从Apple文档:

- (BOOL)becomeFirstResponder 

“你可以调用这个方法来进行响应者的物体,如视图中的第一响应者。然而,你应该只把它的这一观点,如果它是的一部分。一个视图层次结构如果视图的window属性包含一个UIWindow对象,它已经被安装在一个视图层次结构中;如果它返回nil,视图就从任何层次结构中分离出来。

+0

我试过了,我的DraggableView不会成为FirstResponder ....我想我在我的问题上滥用了“first responder”这个词。 – LilDwarf 2012-03-30 02:51:42

+0

啊,是的,它有一个非常具体的含义。我想我明白你的意思,但是你可以添加你的相关代码,以便更容易地看到发生了什么? – rosslebeau 2012-03-30 03:04:31

+0

我编辑的问题包括一些代码,它可能会帮助你更好地理解它:) – LilDwarf 2012-04-09 04:45:26