我正在使用SFSafariViewController,并遇到以下问题:向用户显示上传图片按钮,点击该设备正确显示多个选项,其中一个是相机。当用户选择摄像机时,它会加载摄像机,但屏幕为黑色,操作按钮显示为灰色。但是,如果用户选择库,则会正确上载所选图像。
我确认该应用已启用相机权限。
其他人遇到此问题?
代码:
import UIKit
import SafariServices
class ViewController: UIViewController, SFSafariViewControllerDelegate
{
private var urlString:String = "https://example.com"
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewDidAppear(animated: Bool)
{
super.viewDidAppear(animated)
let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!)
svc.delegate = self
self.presentViewController(svc, animated: true, completion: nil)
}
func safariViewControllerDidFinish(controller: SFSafariViewController) {
super.dismissViewControllerAnimated(true, completion: nil)
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
----- 更新#1 -----
重置隐私设置并尝试直接从相机上传图像后,我没有得到#SaféViewViewService想访问相机,我认为这可能是问题所在。因为在我接受之后,屏幕仍然是黑色的,我想知道为什么它不说我的应用名称就像" FooBar"想要访问...也许这种不对齐是相机屏幕为黑色的原因。只是不确定如何改变它。
----- 更新#2 -----
这似乎是一个SFSafariViewController问题,因为我实现了WKWebView并且相机工作正常。
答案 0 :(得分:3)
编辑iOS 11.3: 感谢Rihards的评论,并指出这已得到修复。
这显然是SFSafariViewController的一个已知错误(我提交了一个已关闭的雷达)。我遇到了同样的问题,我们的移动网站无法从设备中获取任何内容,而不是拍摄照片的相机或相机胶卷中的照片。这在Safari和SFSafariViewController中持久存在,因此我们最终只是通过本机VC和Parse重做完整的上传过程。但是,在完成所有这些之前,我从技术支持部门得到了一些建议,他们告诉我尝试以下方法:
然而,我的两分钱是:
除此之外,你现在做的事情并不多,除了用他们的Bug Reporter向苹果提交另一个雷达之外。最后,您可以提交技术支持的门票,但是我不会浪费任何一个,因为每个会员年只有2个。
希望有帮助,朱利安