TwitterKit 登录 WebView 在 iOS 13 中未关闭
TwitterKit Login WebView not dismissing in iOS 13
我正在尝试在我正在使用 TwitterKit 开发的新应用程序中实现 Twitter 登录。 iOS 11 和 iOS 12 一切正常,但 iOS 13 似乎有问题。
这是我在 LoginViewController 中的代码
override func viewDidLoad() {
super.viewDidLoad()
let logInButton = TWTRLogInButton(logInCompletion: { session, error in
if session != nil {
UserDefaults.standard.set(session?.userID, forKey: "userId")
UserDefaults.standard.set(session?.userName, forKey: "userName")
UserDefaults.standard.set(true, forKey: "isLoggedIn")
print("***** complete with login")
self.performSegue(withIdentifier: "toHome", sender: self)
} else {
print("TWTRButton Error:")
print(error.debugDescription)
}
})
logInButton.center = self.view.center
self.view.addSubview(logInButton)
}
登录后,登录的webview本应关闭,但它只是在当前屏幕旋转,并没有关闭。事实上,它自己的 loginCompletion 永远不会触发,因为两个打印语句都不会触发。
我认为这与模态呈现有关。不管怎样?
所以问题出在 Xcode 11 本身的更改上。我使用了一个名为 TwitterKit5 的 TwitterKit 维护版本,并在 GitHub 上发布了一个问题。
https://github.com/touren/twitter-kit-ios/issues/10#issuecomment-582262246
维护者指出,新的 Xcode 创建了一个新的 SceneDelegate 文件,它阻塞了
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
将此添加到 SceneDelegate.swift:
func scene(_ scene: UIScene,
openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let context = URLContexts.first {
TWTRTwitter.sharedInstance().application(UIApplication.shared, open: context.url, options: [UIApplication.OpenURLOptionsKey.sourceApplication: context.options.sourceApplication as Any])
}
}
之后工作完美!
我正在尝试在我正在使用 TwitterKit 开发的新应用程序中实现 Twitter 登录。 iOS 11 和 iOS 12 一切正常,但 iOS 13 似乎有问题。
这是我在 LoginViewController 中的代码
override func viewDidLoad() {
super.viewDidLoad()
let logInButton = TWTRLogInButton(logInCompletion: { session, error in
if session != nil {
UserDefaults.standard.set(session?.userID, forKey: "userId")
UserDefaults.standard.set(session?.userName, forKey: "userName")
UserDefaults.standard.set(true, forKey: "isLoggedIn")
print("***** complete with login")
self.performSegue(withIdentifier: "toHome", sender: self)
} else {
print("TWTRButton Error:")
print(error.debugDescription)
}
})
logInButton.center = self.view.center
self.view.addSubview(logInButton)
}
登录后,登录的webview本应关闭,但它只是在当前屏幕旋转,并没有关闭。事实上,它自己的 loginCompletion 永远不会触发,因为两个打印语句都不会触发。
我认为这与模态呈现有关。不管怎样?
所以问题出在 Xcode 11 本身的更改上。我使用了一个名为 TwitterKit5 的 TwitterKit 维护版本,并在 GitHub 上发布了一个问题。
https://github.com/touren/twitter-kit-ios/issues/10#issuecomment-582262246
维护者指出,新的 Xcode 创建了一个新的 SceneDelegate 文件,它阻塞了
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
将此添加到 SceneDelegate.swift:
func scene(_ scene: UIScene,
openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let context = URLContexts.first {
TWTRTwitter.sharedInstance().application(UIApplication.shared, open: context.url, options: [UIApplication.OpenURLOptionsKey.sourceApplication: context.options.sourceApplication as Any])
}
}
之后工作完美!