Ios 在UITableView中使用手指在屏幕中绘图

Ios 在UITableView中使用手指在屏幕中绘图,ios,objective-c,uitableview,touches,Ios,Objective C,Uitableview,Touches,我遵循这个关于在UIView(子类)的层中在屏幕上绘制的优秀小教程。 它只是工作 只有一件事。我将此视图放置为UITableViewCell的子视图,该单元自然显示为UITableView的一部分。 我想当我把它放在UIScrollView中时,我也会遇到同样的问题。(UITableView仍从UIScrollView继承) 只要它们的相关运动是水平的,我的绘画视图就会触发触摸。只要我将手指垂直移动,甚至部分移动,UITableView就会接管并滚动表格 当触摸在我的视线范围内时,有没有合适的方

我遵循这个关于在UIView(子类)的层中在屏幕上绘制的优秀小教程。 它只是工作

只有一件事。我将此视图放置为UITableViewCell的子视图,该单元自然显示为UITableView的一部分。 我想当我把它放在UIScrollView中时,我也会遇到同样的问题。(UITableView仍从UIScrollView继承)

只要它们的相关运动是水平的,我的绘画视图就会触发触摸。只要我将手指垂直移动,甚至部分移动,UITableView就会接管并滚动表格

当触摸在我的视线范围内时,有没有合适的方法让桌子停下来控制触摸


如果它很重要:我正在使用故事板。该单元是一个原型单元,具有自己的UITableViewCell子类

对此我没有答案。但基本上有一个解决办法

您可以让用户进入绘图模式,其中禁用UItableviewcell的滚动,然后

用户完成绘图后,可以再次启用滚动


在屏幕上的任何位置包含一个按钮都可以帮助您切换模式。

我使用了与您所说的相同的类“Canvas”,并在UITableViewCell中实现了这一点。但我没有使用整个单元格进行绘制,只是将UITableView中的UIView用作子视图

当UIView(我允许绘图的单元格的子视图)触发ToucheSeStart或ToucheSeEnded时,我通过激活和禁用UITableView滚动来实现整个用户体验。因此,当他们在UIView中触摸/移动时,他们正在绘图。当它在外面时,它们在滚动。因此,他们无法在UIView上滚动,因为他们将在绘图

您案例中的问题是,由于整个单元格是用于绘图的视图,因此用户无法在该具体单元格中滚动,因为它是绘图单元格


希望这会有所帮助。

谢谢。从技术上讲,这是可行的。但这是一种良好的用户体验吗?无论如何我可以尝试在用户实际绘制某些内容时禁用滚动。但当用户开始垂直绘制时,这将不起作用。我的画布子视图也只是该单元格的一部分。单元格中还有其他标签和按钮。画布视图的所有侧面都有足够的空间供用户拖动以滚动表格。我也试过同样的把戏。我追踪了TouchesStart何时被触发。只有当用户侧移时才会触发。我不会注意到任何上下组件的移动。你是不是耍了个小把戏?嗯。。有一件事,如果你在画布上轻按,然后上下移动手指,它会滚动或画图?(慢慢地试试,先在画布上敲击,然后向上或向下轻扫一点)我刚试过。在TouchesStart中,我首先爬上superview链,直到找到一个UITableView并将scrollEnabled设置为NO。在touchesEnded中也是如此:使用YES。因此,当用户开始垂直绘制时,效果良好。用户可以更改方向并继续绘制。当用户开始画图,但在触摸之后等待片刻,然后才真正移动手指时,它也可以正常工作。但当用户开始水平或对角线左右时,表格会滚动。然后我认为这是因为touchesbeent不会启动,因为第一个手势不会被识别为轻触,而是直接轻击。也许您可以尝试在UITableView中捕获这些手势,并将这些动作发送到画布方法。我没试过,但这是个主意。