Ios 将视图的子视图拖动到其父视图

Ios 将视图的子视图拖动到其父视图,ios,iphone,drag-and-drop,Ios,Iphone,Drag And Drop,我已经找了好几个小时的解决办法了。虽然我可以找到类似的问题,但我没有得到答案。请帮我做这个。情况是这样的 我正在开发一个iPad应用程序。我在根视图a中的UIScrollView B中有一个自定义UIControl(UIControl的子类)对象C。因此父子关系如下:a->B->C。我想做的是将自定义UIControl C拖动到根视图a。下面是我所做的 因为C是一个UIControl,我向它注册了UIControlEventTouchDown和uicontrolEventTouchDragins

我已经找了好几个小时的解决办法了。虽然我可以找到类似的问题,但我没有得到答案。请帮我做这个。情况是这样的

我正在开发一个iPad应用程序。我在根视图a中的UIScrollView B中有一个自定义UIControl(UIControl的子类)对象C。因此父子关系如下:a->B->C。我想做的是将自定义UIControl C拖动到根视图a。下面是我所做的

因为C是一个UIControl,我向它注册了UIControlEventTouchDown和uicontrolEventTouchDragins事件以跟踪手指移动。然而,注册的方法只在C的框架内被触发。当我的手指接触到框架内部时,它就工作了。当我把它从C的帧外拖到B,然后拖到A时,我丢失了手指移动事件。我想知道做这件事的正确方法是什么。


uicontrolEventTouchDragins只会注意到视图边界内的拖动事件。您还需要将UIControlEventTouchDragOutside添加到C视图,或者您可以收到所有触摸的通知,并找出触摸在X、Y上的位置,查看触摸的坐标是否在您的C视图内,然后在触摸结束时和触摸拖动期间对其进行处理。

酷!为C视图使用UIControlEventTouchDragOutside有效。对于第二种方法,我必须覆盖根视图A的hitTest:withEvent:以捕获触摸事件。我说得对吗?