gpt4 book ai didi

iphone - 从 UIPopoverController 拖放到其他 UIView

转载 作者:行者123 更新时间:2023-12-03 18:52:00 26 4
gpt4 key购买 nike

我将如何实现将 UIView 从 UIPopoverController 拖放到后面的 UIView 中。

这是 Pages 在其插入媒体弹出窗口中提供的功能,您可以在其中将形状从 UIPopoverController 中拖出并将其放入主文档中。

我实际上对 pan UIGestureRecognizers 及其实现位置感到困惑。

谢谢

乌默

最佳答案

根据 UIPopoverController 的文档,当弹出窗口出现时,它会出现在一个特殊的“窗口”上。因此,仅向弹出窗口 View Controller 的内容 View Controller 添加 subview 不足以将 View 拖动到弹出窗口 View Controller 的 View 之外。

这里最简单的解决方案是创建您自己的窗口,在发生拖动时将可拖动 View 添加到窗口中。使窗口在拖放期间可见,然后在完成后释放窗口。

如上所述,手势识别器 (GR) 最适合拖/放功能。一旦 GR 的状态更改为“开始”,GR 将控制所有触摸,直到实现“结束”或“取消”状态,这使得它非常适合在 View Controller 和窗口之间拖动 View :)

示例:

@interface MySplitViewController : UISplitViewController {

UIView *dragView;
UIWindow *dragWindow;
}

实现:注意我们不需要在窗口上调用“makeKeyAndVisible”。我们只需要设置它的“隐藏”属性

来自 Apple 关于 makeKeyAndVisible 方法的信息://方便。大多数应用程序调用它来显示主窗口并使其成为关键。否则使用 View 隐藏属性

-(void)dragBegan{

self.dragWindow = [[UIWindow alloc] initWithFrame:self.view.window.frame];
[self.dragWindow addSubview:self.dragView];
[self.dragWindow setHidden:NO];
}

在这里,我们处理手势识别器的“已结束”或“已取消”状态。注意:拖/放完成后删除窗口非常重要,否则您将失去与下面 View 的用户交互性。

-(void)dragEnded{

[self.dragView removeFromSuperview];

[self.dragWindow setHidden:YES];
[self.dragWindow release];

[self.view addSubview:self.dragView];
}

关于iphone - 从 UIPopoverController 拖放到其他 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3148814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com