我将如何实现将UIView从UIPopoverController
拖放到后面的UIView
中的操作。
这是Pages在其插入媒体弹出窗口中提供的功能,您可以在其中将形状从UIPopoverController
拖出并拖放到主文档中。
实际上,我对pan UIGestureRecognizers
及其实现位置感到困惑。
谢谢,
乌默尔
最佳答案
您必须处理两个 View Controller ,一个在后台,称为mainController,一个使用称为popoverController的UIPopoverViewController
呈现。您的popoverController可以在 View 中添加一个UIPanGestureRecognizer
,用户可以拖动它。 gestureRecognizer的操作目标可以是popoverController上的方法。
一旦用户开始拖动操作,则在手势状态为UIGestureRecognizerStateBegan
的情况下,将使用actionRecognizer作为参数调用您的action方法。然后,当删除失败时,您可以保存 View 的当前框架,以便对其进行动画处理。可能有必要将 View 移动到另一个 super View (例如,窗口),因为我不确定UIPopoverViewController是否将clipsToBounds为其 View 。
随着用户的拖动,您的action方法将以UIGestureRecognizerStateChanged
的状态不断地被handleRecognizer调用。在translationInView:
上使用UIPanGestureRecognizer
方法来确定用户拖动了多少,并相应地更新了拖动的 View 中心/框架/变换。
一旦用户抬起手指,最后一次调用该 Action 方法,并且该手势方法的手势状态设置为UIGestureRecognizerStateEnded
。现在是时候找出拖动是否成功了。例如,popoverController可以通过委托(delegate)向mainController询问 View 当前位置下是否有放置目标,如果是,则mainController可以采取行动,否则popoverController会将拖动的 View 动画化为原来的位置,并将其添加为对其 View 进行 subview 。
我希望这是可以理解和有用的。