我正试图模仿从UITableView
到UIView
的图像拖拽。 UITableView和UIView都在同一个视图中,并排。
我的方法:
是在touchesBegan
内触发UITableView
事件(即触摸/选择一个单元格时),并在触摸在UIView
结束时触发touchesEnded事件。
问题:
因此,我创建了一个自定义UITableViewCell
,其中包含UIImageView
和一些UILabels
。我为此User Interaction Enabled
设置了UIImageView
。然后,为了接收touchesBegan
事件,我确实覆盖了自定义touchesBegan
类中的UITableViewCell
方法;现在我能够从单元格收到touchesBegan
事件。
问题是
当touchesEnded
上的触摸结束时,我没有收到UIView
事件。请注意,我已经在视图控制器类中实现了touchesEnded
方法(不在自定义类中);如果我在UIView
内开始并停止触摸,我会看到touchesEnded
被解雇了。
这里有什么我想念的吗?
使用Xcode 4.6(4H127),在带有iOS 6.1.3的iPad 2上进行测试
答案 0 :(得分:0)
这不会那样。您需要在包含两个子视图的父视图中使用触摸方法。可以像这样抽象地看:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if ([self touchOnCell:touches]) { //check to see if your touch is in the table
isDragging = YES; //view cell
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
//do your dragging code here
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if (isDragging && [self touchOnDropView:touches]) {
//do your drop code here
}
}
现在,如果单独使用此功能,您可能希望在tableView上实现hitTest
,如果触摸位于拖动对象的区域中,则返回父视图。
希望这会有所帮助