我将如何实现将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 。

我希望这是可以理解和有用的。

10-08 08:07