Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是否被视为在iphonedev中使用私有函数,因而是非法的?_Iphone_Uiwebview_Scroll_Private_Api - Fatal编程技术网

这是否被视为在iphonedev中使用私有函数,因而是非法的?

这是否被视为在iphonedev中使用私有函数,因而是非法的?,iphone,uiwebview,scroll,private,api,Iphone,Uiwebview,Scroll,Private,Api,我正在尝试禁用UIWebView的滚动,我找到的唯一方法是使用以下方法: #import <objc/runtime.h> id scroller = [[Webview subviews] lastObject]; int count; Method *method = class_copyMethodList([scroller class], &count); int i; for (i=0; i<count; i++) { if (strcmp(met

我正在尝试禁用UIWebView的滚动,我找到的唯一方法是使用以下方法:

#import <objc/runtime.h>

id scroller = [[Webview subviews] lastObject];
int count;
Method *method = class_copyMethodList([scroller class], &count);
int i;
for (i=0; i<count; i++) {
    if (strcmp(method_getName(method[i]), "setScrollingEnabled:") == 0)
        break;
}
IMP test = method_getImplementation(method[i]);
test(scroller, @selector(setScrollingEnabled:), NO);
#导入
id scroller=[[Webview子视图]lastObject];
整数计数;
方法*Method=class\u copyMethodList([scroller class],&count);
int i;

对于(i=0;i这可能有问题,但只要在找不到该方法时/如果你有回退行为,就不是拒绝的原因。已经发生了更严重的滥用行为。

好吧,也许他们认为你用了另一种方式,比如使用屏幕外UIWebView的内容并在普通UIIMage视图中显示,或者使用HTML cont页面的ent限制其大小并在UIWebView中呈现。

这样做会不会简单得多:


如果([scroller respondsToSelector:@selector(setScrollingEnabled:)])[scroller setScrollingEnabled:否]


这避免了他们可能扫描二进制文件寻找的任何潜在方法调用(不确定他们如何验证“合法性”)。它仍然不是100%洁食,但绝对安全。

是的,这被认为是非法的。我实际上收到了一条“警告”,说SetScrolingEnabled是私有框架的一部分。他们批准了该应用程序,但说我需要在下次提交更新时删除该调用。

我的应用程序因为使用SetScrolingEnable而被拒绝艾德,小心


他们的信息:“应用程序中包含的非公共API是setScrolingEnabled”

如果该方法不在.h文件中,则它是私有的。这是一条非常简单的规则。对于简单的消息发送,您需要执行任何运行时“shenanigans”这一事实应该说明问题。

这是有效的——

UIScrollView *scrollView = [[myWebView subviews] lastObject];
scrollView.scrollEnabled = FALSE;
这解决了这个问题,同时保持链接可点击,它嵌入的任何滚动视图都可滚动,并且只使用公共API


我发现,如果将javascript解决方案嵌入到
UIScrollView
中,并将
userInteractionEnabled
设置为false,则会阻止webView中的链接正常工作。

我想知道如何“获取屏幕外UIWebView的内容,并将其显示在普通UIIMage视图中"。有什么提示吗?你可以使用-renderInContext。如果你需要更多详细信息,请开始新的问题,因为很难在注释中发布代码。我这样做了,但我的应用程序仍然被拒绝。你确定是为了这个吗?在iOS 5中,可以通过web视图上的属性访问scrollView,因此这应该不再是一个问题。当然-他们是这样做的ned SetScrolling按名称命名。了解关于5.0的信息很有用,谢谢。我目前正在为4.0及以上版本构建。不。这也不能工作。不应调用该函数(适用于iOS 6)。请改用此
scrollView.scrollEnabled=FALSE;