我目前正在开发一个使用a UIWebView来显示某些内容的应用程序.它曾经很好地工作UIWebView,但我们决定切换到WKWebView我们将操作系统要求提高到8.1.我们注意到性能有了很大的提高,但是一些简单的认为过去工作正常,现在开始失败了.经过一些研究,我设法看到发生了什么 - 但我没有看到如何解决它.我想知道是否有人可以借此给我一个...
我们的webview加载的URL需要相当多的时间来完成工作,所以在开始请求之前我们加载一个静态微调器,这样用户就不会觉得应用程序已经疯了.该静态内容的加载周期已经调整,因此在正确加载静态内容之前,我们不会启动URL请求.只要用户不旋转设备,这样就可以正常工作.这是可以看到的:
(出于隐私目的,我不得不改变视图.毕竟我不是这段代码的所有者:-))

我正在使用这个HTML代码来测试大小.身体的背景颜色为深灰色,丑陋的浅灰色框扩展到宽度的100%,减去边缘.到现在为止还挺好.但是如果用户旋转设备,则会发生以下情况:

这是令人毛骨悚然的,因为显然身体的拉伸与最大宽度匹配,但内部div处理错误的相对大小.只要正在处理请求,这就会继续.当我强制超时使请求失败时,WKWebView重新呈现并显示其正确的外观:

一旦我发现了这一点,我尝试了订阅旋转观察器并强制重新渲染webview,但没有成功:
viewNeedsDisplay了两个UIWebView和UIScrollView内UIWebViewUIScrollView内容那么,到目前为止我的结论:
UIWebView,只是在新的WKWebView(我再次测试,确认)WKWebView在加载状态时无法正确呈现视图有人知道是否有办法解决这个问题?像我缺少的一个神奇属性,默认情况下被禁用?当他们重新制作webview时,我不认为他们打破了这一部分...在此先感谢:)
编辑:自创建帖子以来我尝试过的东西没有成功:
dispatch_async方法在不同的线程中调用http请求不起作用.在引擎盖下,WKWebview可能最终使用相同的线程,就像从主线程中调用它一样.我有一个iOS 5.1应用程序,它注册到APNS服务以接收通知.注册成功,我正确收到通知.当我尝试处理通知时出现问题.
应用程序运行后,didReceiveRemoteNotificationAppDelegate中的方法被正确调用,因此通知按预期处理.但是,这仅在应用程序在前台运行时才会发生.
但是,当应用程序在后台运行或只是停止时,不会调用该方法.我已经读过你应该在方法didFinishLaunchingWithOptions方法中添加一些行来从userInfo字典中获取通知并处理它.这很好用,但只有在通过Notification Center点击通知打开应用程序时才可以.这意味着,如果您通过单击其徽章打开应用程序,或者只是通过更改上下文(如果您在后台运行它),该应用程序永远不会意识到已收到通知.此外,如果收到多个通知,我们可以只需点击通知中心即可立即处理其中一个,这很痛苦:-)
有没有办法在通知中心阅读待处理的通知?我知道有一种方法可以使用该方法刷新它们,cancelAllLocalNotifications但我还没有找到一种方法来读取它们.我真的需要处理所有这些问题.我想到与第三方通知服务器实现通信协议,以便在应用程序到达前台时再次检索信息,但由于信息已经在操作系统中,如果无法以某种方式访问它,我会觉得很奇怪.
那么,有人知道这样做的方法吗?提前致谢.
正如标题所说,我在使用LLDB时遇到了问题.当调试器设置为LLDB时,我已经调查了这个线程Xcode 4挂起附加到(App名称)并遵循给出的指令,因为我遇到了完全相同的问题,并设法使用GDB进行调试 - 它完美无缺.无论如何,我在一个团队工作,我是唯一一个有这个问题的人,所以每次提交更改时从GDB切换到LLDB都有点烦人,所以解决方法不会在远程存储库.
我检查了编译器,它设置为LLVM 4.2.事实上,该应用程序完美编译并安装在模拟器中(我可以执行它,一旦我杀死并重新启动Xcode).我会尝试重新安装Xcode,但它是一个烂摊子,因为它是一个大尺寸的包,我的互联网使用限制,这将需要很长一段时间.有谁知道这里发生了什么?是否有可能LLGB捆绑在XCode之外,即使我在系统上找不到它?
任何见解将不胜感激.我可以保持解决方法,只是因为我的个人情况,它有点烦人:-)
编辑:关于'挂'的意思的更多细节.我从Xcode打开开始,模拟器关闭(它甚至没有出现在Dock上).我点击"运行",模拟器成功启动,应用程序显示启动画面.然后xcode显示消息:"附加到".现在它已经挂了.您可以关闭模拟器,xcode仍在附加."运行"和"停止"按钮都停止工作.您可以通过右键单击Dock来尝试退出应用程序,您会收到一条警告消息,从这一点开始您甚至无法键入代码:XCode完全挂起.这里唯一的选择是使用Cmd + Alt + Esc来杀死XCode.
我正在实现一个UILabel带链接点击支持的自定义.为此,我有以下方法:一个用于初始化结构(仅调用一次),另一个用于检测字符串中确定的文本范围内的点击:
- (void) sharedInit {
// Remember, this method is only called once
self.layoutManager = [[NSLayoutManager alloc] init];
self.textContainer = [[NSTextContainer alloc] initWithSize:self.frame.size];
[self.layoutManager addTextContainer:self.textContainer];
self.myGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)];
self.textContainer.lineFragmentPadding = 0.0;
self.textContainer.lineBreakMode = self.lineBreakMode;
self.textContainer.maximumNumberOfLines = self.numberOfLines;
self.textContainer.size = self.frame.size;
}
- (void) onTap:(UITapGestureRecognizer*) tapGesture {
CGPoint location = [tapGesture locationInView:tapGesture.view];
NSInteger index = [self.layoutManager characterIndexForPoint:locationOfTouchInLabel
inTextContainer:self.textContainer
fractionOfDistanceBetweenInsertionPoints:nil];
NSLog(@"index of tapped character: %li", index);
// ... and some more code to work with that index …