问题标签 [ios8.3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - ios8.3 中不支持 LAContext 中的自定义用户后备按钮
我通过设置localizedFallbackTitle
为“使用密码”自定义了后备按钮。有效。但是在我将 iPhone 更新到 iOS 8.3 后,后备按钮在 TouchID 视图上消失了。
这是 API 更新还是 iOS 8.3 的错误?
如何解决?
ios - 静态库和 Swift
所以我正在使用 Swift 开发一个 iOS 项目,我想创建一个包含一些有用内容的静态库。
我的问题是当我尝试在 Xcode(6.3 版)中构建我的库时,我有一个“构建失败”,然后是:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker
我从来没有见过这个,它不是我的第一个静态库。所以我想我可能与我只使用 Swift 类的事实有关。
你们有什么感想 ?先感谢您。
ios - 了解 handleWatchKitExtensionRequest
我正在 iPhone 应用程序上测试一些代码的执行。我遵循 Apple 建议的文档(不使用后台任务,仅使用控制台日志)。但是我在控制台上没有得到任何东西(我想看到字符串“howdy”)。
这是因为我在模拟器上运行 WatchKit 扩展应用程序吗?或者有什么我想念的吗?
苹果 说:
如果您使用 openParentApplication:reply:,请确保在输入 application:handleWatchKitExtensionRequest:reply: 后立即创建后台任务。这将确保 iPhone 应用程序在后台获得时间,而不是再次暂停。此外,在 2 秒的 dispatch_after 中包装对 endBackgroundTask: 的调用,以确保 iPhone 应用程序在再次暂停之前有时间发送回复。
我在 WatchKit 扩展上的实现(链接到按钮的操作方法):
我在AppDelegate.m文件上的实现:
我在控制台中得到的:
xcode - ERROR ITMS-90068: "This bundle is invalid. The value provided for the key MinimumOSVersion '8.3' is not acceptable."
I need to solve this Issue: ERROR ITMS-90068: "This bundle is invalid. The value provided for the key MinimumOSVersion '8.3' is not acceptable."
Because I was uploading my application to appstore and presented this error, my app is in the version 8.3 iOS
ThankU :*
ios - 辞职并成为 ios 8.3 中的第一响应者
我刚刚“升级”到 8.3,让我从一个 UITextfield 离开的逻辑不再起作用。现在使用以下代码,当用户完成文本并自动转到下一个字段时,它会清除上一个字段。这在早期的 ios 版本中完美运行。有什么建议么?谢谢。这令人抓狂。
ios - iOS 8.3 UIWebView JavaScript 到本机通信中断
webView:shouldStartLoadWithRequest:navigationType:
编辑:解决方案是在收到 JavaScript 消息时从委托方法返回 NO ,这解决了所有版本中的所有问题。
UIWebView
在 iOS 8.3 中,JavaScript 与本机(Obj-C 或 Swift)通信的行为发生了变化。
假设我想从 JS 向本机代码1发送几条消息:
我使用这个委托方法来捕获本机代码中的消息:
我在我的 Xcode 控制台中得到以下信息:
注意每条消息的时间戳。前两个是直接进来的,但是连续的消息以10 秒的间隔准确地进来。在最后三个消息到达的 30 秒内,UI 冻结!控制台报错对应主线程(UI线程)被某些代码阻塞了10秒,超过这个时间限制后被系统杀死。
我猜 UIWebView 在 iOS 8.3 上在自己的线程中执行,但我对此还不太了解。根据这个答案,UIWebView
允许 JavaScript 最多执行 10 秒。所以我猜JavaScript在某种程度上冻结了,只有当它被杀死时,消息才会传递到本机代码。
另外,我认为window.open(myURL)
效果更好的原因window.location = myURL
是因为它必须创建一个新的线程或执行环境,这允许它将其消息发送到本机代码,而不会在它们到达之前压缩先前的消息。
1我使用window.open(myUrl)
而不是window.location = myUrl
,它只允许最后一条消息到达本机代码(有关可用的不同方法的详细信息,请参见附录 1)。
编辑 1
哦,不。setTimeout
再次来到“救援”。setTimeout
如果您以大约50 毫秒的延迟将后续消息包装在 a 中,那么测试用例 3 似乎适用于 iOS 8.3、8.1 和 7.0 。
但我正在寻找一种不会引入黑客攻击和延迟的永久解决方案。走这条路就像在沙柱上构建你的应用程序。
附录 1:UIWebView 的 JavaScript <-> 原生通信指南。
测试用例
window.location = myURL
1) 通过本机代码发送两个或多个连续消息(使用window.location.href = myURL
,window.location.replace(myURL)
等是等效的)。
window.open(myURL)
2) 通过或window.open(myURL, ‘_blank’)
或通过创建以下标签之一并设置其src
属性来发送两个或多个连续消息: <iframe>
, <embed>
. 请注意,以下标签不起作用:<audio>
, <video>
, <script>
, <style>
.
3) 使用请求缓冲区发送两个或多个连续消息。这确保仅在当前请求已经调用UIWebView
委托方法时才调用下一个请求webView:shouldStartLoadWithRequest:navigationType:
。
示例 JavaScript:
原生 Obj-C:
测试结果(使用 iPhone 5 模拟器)
iOS 7.1
情况 1:只有最后一条消息到达。
情况 2:消息按顺序到达,每个消息之间延迟大约四分之一秒(即不算太糟糕)。
情况 3:消息按顺序到达,每条消息之间延迟大约四分之一秒(即不算太糟糕)。
iOS 8.1
案例一:同iOS 7.1
情况 2:前两个通常会立即到达,但接下来的两个会以 10 秒的间隔进入(同时,UI 冻结)。
案例3:同iOS 7.1
iOS 8.3
案例一:同iOS 7.1
案例2:同iOS 8.1
案例 3:前两个通常会立即到达,但接下来的会以 10 秒的间隔进入(同时,UI 冻结)。
ios - iOS 8.3,键盘扩展 Safari 问题
我正在制作 iOS 键盘扩展。
但是当我在 Safari Web 中单击按钮后执行以下代码时,代理(UITextDocumentProxy
)停止了。
它在 safari-top-search-bar 中运行良好,但在其他纯文本框中停止。
如果我在adjustTextPositionByCharacterOffset之后将块放入另一个队列上的 dispatch_async 并有一些延迟。有用
但是,它也使我的代码在所有其他应用程序中变慢。
有什么好主意吗?或者有什么方法可以检测它是否是 Safari?
ios - 文档提供者的dismissGrantingAccessToURL 在iOS 8.3 中不起作用
我使用 Document Picker Extension 和 Document Porvider Extension 构建我的应用程序,它们在 iOS8.3 之前运行良好。
在 iOS 8.3 中,如果我调用了 dismissGrantingAccessToURL ,什么都不会发生。Picker 的视图控制器没有关闭,并且没有调用主机应用程序的委托函数didPickDocumentAtURL。没有任何错误或警告消息。它只是......什么也没发生!!!,就像我没有调用这个函数一样。
有人也有这个问题吗?
XCode:6.3 iOS:8.3
uiviewcontroller - 视图控制器转换被阻塞或延迟
我有这个交换视图控制器方法。它工作正常,除了某些东西正在阻塞或延迟完成块。我已将动画持续时间设置为零以进行测试,但我在设备(iPhone6+ iOS8.3 64GB)上观察到的是方法 transitionFromViewController:toViewController:duration:options:animations:completion: 被调用但 fromViewController 仍然存在在屏幕上,有很长的延迟(大约 5 秒),然后调用完成块,fromViewController 最终消失并被释放。此时 fromViewController 什么也不做。
有没有其他人看到过这种行为?或者知道确定主线程是否被阻塞并发现阻塞者是谁的好方法?
谢谢埃德。
ios - touchesBegan 和 touchesEnded 在 Xcode 6.3 更新后返回不同的触摸位置
这可能是我遇到过的最奇怪的问题,我什至不知道从哪里开始寻找 - 非常感谢任何帮助。
更新到 Xcode 6.3(和 iOS 8.3 SDK)后,在我的一个旧 OpenGL 应用程序中出现了一个新问题,在宽屏显示器上,任何 x 坐标触摸的上限为 320。这意味着如果我触摸高于 320 的 x 坐标,它将在触摸中注册为 320。
现在奇怪的是,这只发生在我的 touchesBegan 函数中EAGLView
——touchesMoved
并且touchesEnded
仍然可以检测到多达 568 个,即使它们具有完全相同的代码。
有谁知道这可能是什么原因造成的?以下是所有 3 个功能中使用的触摸代码: