我可以在 iOS 中自定义 Twitter 工具包的登录按钮吗?

Posted

技术标签:

【中文标题】我可以在 iOS 中自定义 Twitter 工具包的登录按钮吗?【英文标题】:Can I customize Login button of Twitter kit in iOS? 【发布时间】:2015-07-29 20:54:57 【问题描述】:

我已经下载了一个 Twitter 工具包框架并添加了使用 Twitter 登录的代码。但是,我不希望登录按钮看起来像那样。我想要一个用于登录的自定义按钮。我可以这样做吗?我只想使用这个框架,因为它也适用于 ios 系统帐户。

【问题讨论】:

【参考方案1】:

根据document:

在按钮中添加代码:

目标-C

[[Twitter sharedInstance] logInWithCompletion:^
            (TWTRSession *session, NSError *error) 
  if (session) 
      NSLog(@"signed in as %@", [session userName]);
   else 
      NSLog(@"error: %@", [error localizedDescription]);
  
];

斯威夫特

Twitter.sharedInstance().logInWithCompletion 
                (session, error) -> Void in
    if (session != nil) 
        println("signed in as \(session.userName)");
     else 
        println("error: \(error.localizedDescription)");
    

【讨论】:

我还添加了对我的问题的异步回答,以及您的回答。你仍然值得投票和接受。 @Pratik [[Twitter sharedInstance] logOut]; 已经试过了,但是下一次,当我按下登录按钮时,它不会要求凭据!直接我得到会话。 哦!可能你必须向 Twitter 社区 iOS 提问。 @Pratik 谁能给我推特登录的步骤。我试了很多次,但我做不到请帮帮我。【参考方案2】:

是的,您可以自定义您的 Twitter 登录按钮。

只需将 UIButton 添加到情节提要所需的视图控制器中。选择它并打开身份检查器,现在在 Class 文本字段中,在创建属性后输入“TWTRLogInButton”。

您将创建如下内容:-

@property (nonatomic,strong) IBOutlet TWTRLogInButton *customTwitterButton;

之后,您可以使用它或在您的 viewDidLoad 方法中实现它,如下所示:-

self.customTwitterButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) 
    // do operations as per your wish
];

【讨论】:

在我的情况下不会发生这种情况。无论如何,很高兴看到你自己找到了方法。 这应该不起作用,因为+buttonWithLogInCompletion: 创建了一个新的按钮实例,所以你覆盖了 IBOutlet self.customTwitterButton【参考方案3】:

Twitter 在文档中提供了单独的登录方法。在 xib 或故事板中创建您的自定义按钮,给它一个选择器并添加一个用于 twitter 登录的方法。这是一个例子:

- (IBAction)btnTwitterLogin_pressed:(id)sender

    [[Twitter sharedInstance] logInWithCompletion:^
     (TWTRSession *session, NSError *error) 
         if (session) 
             NSLog(@"%@", [session userID]);
             NSLog(@"%@", [session userName]);
             NSLog(@"%@", [session authToken]);
             NSLog(@"%@", [session authTokenSecret]);
          else 
             NSLog(@"Error: %@", [error localizedDescription]);
         
     ];

希望它也对其他人有所帮助。

【讨论】:

如何在不使用应用程序的情况下通过网络登录 twitter。【参考方案4】:

在 Swift 4.2 和 Xcode 10.1 中

默认 Twitter 登录按钮代码

let twitterLoginButton = TWTRLogInButton(logInCompletion:  session, error in
    if (session != nil) 
       print("signed in as \(session!.userName)");
     else 
       print("error: \(error!.localizedDescription)");
    
)

twitterLoginButton.frame  = CGRect(x: 60, y: 100, width: 200, height: 40)
self.view.addSubview(twitterLoginButton)

普通登录按钮操作代码

@IBAction func onClickTwitterSignin(_ sender: UIButton) 

    TWTRTwitter.sharedInstance().logIn  (session, error) in

        if (session != nil) 

            let name = session?.userName ?? ""
            print(name)
            print(session?.userID  ?? "")
            print(session?.authToken  ?? "")
            print(session?.authTokenSecret  ?? "")

            self.loadFollowers(session: session?.userID ?? "")

            let client = TWTRAPIClient.withCurrentUser()
            client.requestEmail  email, error in
                if (email != nil) 
                    let recivedEmailID = email ?? ""
                    print(recivedEmailID)
                 else 
                    print("error--: \(String(describing: error?.localizedDescription))");
                
            

            let twitterClient = TWTRAPIClient(userID: session?.userID)
            twitterClient.loadUser(withID: session?.userID ?? "") (user, error) in
                print(user?.profileImageURL ?? "")
                print(user?.profileImageLargeURL ?? "")
                print(user?.screenName ?? "")
            

            let storyboard = self.storyboard?.instantiateViewController(withIdentifier: "SVC") as! SecondViewController
            self.navigationController?.pushViewController(storyboard, animated: true)
         else 
            print("error: \(String(describing: error?.localizedDescription))");
        
    


【讨论】:

以上是关于我可以在 iOS 中自定义 Twitter 工具包的登录按钮吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Quickblox 在 Chat ViewController 中自定义或使用我自己的 nib 作为工具栏?

如何在 iOS 中自定义权限请求视图

是否可以在 ios 中自定义推送通知屏幕?

如何在 iOS 中自定义 MPVolumeView?

在ios中自定义progressview / UISlider

在 ios 7.1 中自定义按钮形状