停止在屏幕上拖动UIView

时间:2013-04-11 16:28:36

标签: ios objective-c uiview uiviewcontroller phonegap-plugins

我们正在将第三方优惠墙集成到我们的iOS phonegap应用程序中。

当我们展示offerwall时,它会被添加到标准的phonegap viewcontroller中,并显示在我们的webview顶部。

问题在于人们可以将视图拖到整个地方,而不是仅仅上下滚动。这将在下面的屏幕截图中显示效果:

View being dragged off screen

我们想要实现的是能够锚定此视图,使其无法在应用程序中拖动,并且只能垂直滚动。

在集成代码中,我们可以访问任务墙的UIView和主应用程序的ViewController。

offerwall作为库提供,因此我无法访问其任何代码,只能处理返回的UIView和我添加的UIViewController。其他应用程序已设法实现视图而无需水平滚动

我们正在寻找适用于UIView或ViewController的代码来防止这种情况。

由于

2 个答案:

答案 0 :(得分:1)

商品墙视图可能包含保存实际内容的UIScrollView。您可以尝试循环遍历所有子视图,并在找到的第一个滚动视图上关闭滚动:

    for (UIView *view in offerwall.subviews) {
        if ([view isKindOfClass:[UIScrollView class]]) {
            UIScrollView *scrollView = (UIScrollView*)view;

            scrollView.scrollEnabled = NO;
            return;
        }
    }

这绝对是hacky,但如果您无法访问其代码中的任何其他内容,则可能是您唯一的选择。

答案 1 :(得分:0)

最后,解决方案非常简单。原来这个offerwall是一个UIWebView,在测试模式下,offerwall页面渲染了一些溢出页面的元素,因此水平滚动。在生产模式中,问题消失了