我正在使用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-----
在重置隐私设置并尝试直接从相机上传图像后,我没有看到“SafariViewService Would Like to Access The Camera”的提示,这可能是问题所在。因为在我接受之后,屏幕仍然是黑色的,我想知道为什么它没有显示我的应用程序名称,比如“FooBar Would Like Access……”也许这种不一致性是导致相机屏幕黑屏的原因。只是不确定该如何改变它。
-----更新 #2-----
这似乎是一个SFSafariViewController问题,因为我实现了WKWebView,相机可以正常工作。
与 Safari 本身不同,SFSafariViewController UI 是专门为显示单个页面而设计的,具有一个“Done”按钮,使用户可以返回到你的应用程序中之前离开的地方。如果你的应用程序显示 Web 内容,但没有自定义该内容,请考虑使用 SFSafariViewController 替换 WKWebView 或 UIWebView 浏览器。
你可能会引导你自己/用户进入一个尚不存在的页面。 - Lukesivi