自从Xcode 9开始使用Swift 4&amp ;;在Twitterkit中编写推文IOS 11

时间:2017-10-19 19:26:25

标签: ios11 xcode9 swift4 twitterkit

自从升级到Xcode 9和Swift 4以来,我一直忙着让我的应用程序重新恢复工作。但我仍然在努力让我的推文作曲家工作。在Xcode 8中,这仍然很好......

case "Twitter":

            if (Twitter.sharedInstance().sessionStore.hasLoggedInUsers()) {
                // App must have at least one logged-in user to compose a Tweet
                let composer = TWTRComposerViewController.emptyComposer()
                UIApplication.shared.keyWindow?.rootViewController?.present(composer, animated: true, completion: nil)
            } else {
                // Log in, and then check again
                Twitter.sharedInstance().logIn { session, error in
                    if session != nil { // Log in succeeded
                        let composer = TWTRComposerViewController.emptyComposer()
                        UIApplication.shared.keyWindow?.rootViewController?.present(composer, animated: true, completion: nil)
                    } else {
                        let alert = UIAlertController(title: "No Twitter Accounts Available", message: "You must log in before presenting a composer.", preferredStyle: .alert)
                        UIApplication.shared.keyWindow?.rootViewController?.present(alert, animated: false, completion: nil)
                    }
                }
            }

我现在在Twitter工具包网站上粘贴了什么,并进行了调整,因为我的共享功能都是单独的。

当这段代码启动时,我的Twitter应用程序正在打开,而authenticatin屏幕就像我期望的那样打开: Authenticating

当我连接时,它会快速显示我的时间线,而不仅仅是回到我的应用程序。没有组成窗口......

有人有想法吗?

2 个答案:

答案 0 :(得分:0)

在AppDelegate中添加此问题解决了问题:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

    let handled:Bool = true

    Twitter.sharedInstance().application(app, open: url, options: options)

    return handled
}

答案 1 :(得分:0)

我对两种方法感到困惑。一旦使用了错误的方法,就会出现twitter登录,输入用户名和密码,然后单击“完成”,再次出现登录页面。这是一个无限循环。

open func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        return TWTRTwitter.sharedInstance().application(app, open: url, options: options)
    }

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        return TWTRTwitter.sharedInstance().application(application, open: url, options: [:])
    }

不要使用第二个! 使用第一个!