【发布时间】:2016-06-03 09:26:04
【问题描述】:
我有一个UIScrollView,它可以包含许多视图。为了允许良好的滚动(滚动时内容不会超出视图),在我的 Main.sotryboard 上,我点击了我的 UIScrollView ,然后在属性检查器中我允许了 Clip Subviews 属性:
我的问题: 我的UIScrollViews 中的所有视图都是可拖动的(因为它们都有一个UIPanGestureRecognizer。
因此,当我尝试将它们拖到我的UIScrollView 之外时,它们就会消失。
事实上,他们只是落后于其他所有观点
举个例子,我还有其他组件允许从先例UIScrollView 中删除视图。因此,当我开始从它拖放时,它会消失,然后重新出现在我放置视图的第二个组件中。
我的尝试:我有一个特殊的UIPanGestureRecognizer 用于拖放来自此UIScrollView 的视图。所以,我实际上有这个(显然,它不起作用,否则我不会在这里):
//Here recognizer is the `UIPanGestureRecognizer`
//selectpostit is the name of the view I want to drag
if(recognizer.state == UIGestureRecognizerStateBegan){
selectpostit.clipsToBounds = NO;
}
关于如何改进它的任何想法? 提前致谢。
【问题讨论】:
-
应为父视图将 clipsToBounds 设置为 NO。在您的案例滚动视图中。
-
不要在要拖动的视图上更改
clipsToBounds,而是在scrollView上更改它。拖动视图时对我有用的另一个选项是创建和控制视图的图像快照,然后隐藏原始视图。完成拖动后,在必要时重新定位 -
哦,这看起来真的很棒!谢谢。但是现在,当我的 Scrollview 中有很多视图时,它们会在我拖动时出现(当拖动完成时我做了相反的操作,所以 clipToBounds = yes if(recognizer.state == UIGestureRecognizerStateEnded)。你有解决方案?@Surya Subenthiran
-
如果我拍摄滚动视图的快照,它是否应该解决我在下面提到的问题? @cjay
-
您拖动的视图的快照,而不是滚动。但是,我认为您可以同时攻击它。您也可以尝试调用正确的布局函数(
setNeedsDisplay等...)以在手势结束时重绘滚动视图
标签: ios objective-c uiscrollview uipangesturerecognizer cliptobounds