Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在iOS5中使用Twitter框架提示登录警报?_Objective C_Ios_Twitter - Fatal编程技术网

Objective c 在iOS5中使用Twitter框架提示登录警报?

Objective c 在iOS5中使用Twitter框架提示登录警报?,objective-c,ios,twitter,Objective C,Ios,Twitter,大家可能都知道,自从iOS5以来,就有了一个原生的Twitter框架,可以轻松地从应用程序发布tweet 是否有方法提示将用户转发到设置应用程序并询问用户名和密码的警报 我知道我可以用以下代码解决问题: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]]; 但这是未记录的代码 提前谢谢 问候比利 (我在SO上的第一篇帖子)您不需要实现这一点,如果您将Twitter集成设置

大家可能都知道,自从iOS5以来,就有了一个原生的Twitter框架,可以轻松地从应用程序发布tweet

是否有方法提示将用户转发到设置应用程序并询问用户名和密码的警报

我知道我可以用以下代码解决问题:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];
但这是未记录的代码

提前谢谢

问候比利
(我在SO上的第一篇帖子)

您不需要实现这一点,如果您将Twitter集成设置为在Twitter上发布帖子,并且iOS检测到没有设置Twitter帐户,它将自动为您执行此操作

这是我在iOS 5.1上的iPhone 4S上运行的一个应用程序的屏幕截图

删除首选项链接是指开发人员的自定义操作,就像链接到您自己的首选项菜单一样。这不适用,因为Twitter不仅是iOS 5的内置功能,而且弹出通知您的UIAlertView不是由开发人员处理的,它是iOS的自动功能


这是不可能的,尽管如果用户尚未登录,它应该自动要求用户登录


从iOS 5.1开始,该功能已被删除,如iOS 5.1中所示,我们应该使用TWTweetComposeViewController显示该对话框,因为苹果拒绝使用prefs:root=TWITTER的应用程序

但是,我不喜欢显示推特屏幕和键盘
所以我找到了隐藏它们的方法,但显示了弹出屏幕。

更新: 苹果用这个技巧批准了我的应用。


在这里我找到了方法:

如果设备设置中未设置twitter帐户,则显示自定义警报:

    if (![TWTweetComposeViewController canSendTweet]) {
            UIAlertView *alertViewTwitter = [[[UIAlertView alloc] 
            initWithTitle:@"No Twitter Accounts" 
            message:@"There are no Twitter accounts configured. You can add or create a Twitter account in Settings." 
            delegate:self 
            cancelButtonTitle:@"Settings"
            otherButtonTitles:@"Cancel",nil] autorelease];

            [alertViewTwitter show];
   }


 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

          if (buttonIndex==0) {
                 TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init];
                 if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
                     [(id <UIAlertViewDelegate>)ctrl alertView:alertView
                             clickedButtonAtIndex:0];
                 }
                 [ctrl release];
          }
   }
if(![TWTweetComposeViewController canSendTweet]){
UIAlertView*alertViewTwitter=[[[UIAlertView alloc]
initWithTitle:@“没有Twitter帐户”
消息:@“没有配置Twitter帐户。您可以在“设置”中添加或创建Twitter帐户。”
代表:赛尔夫
取消按钮:@“设置”
其他按钮提示:@“取消”,无]自动释放];
[alertViewTwitter秀];
}
-(无效)alertView:(UIAlertView*)alertView单击按钮索引:(NSInteger)按钮索引{
如果(按钮索引==0){
tweetcomposeviewcontroller*ctrl=[[tweetcomposeviewcontroller alloc]init];
如果([ctrl-respondsToSelector:@selector(alertView:ClickedButtonIndex:)])){
[(id)ctrl-alertView:alertView
单击按钮索引:0];
}
[ctrl释放];
}
}

希望这会有意义:)

谢谢你的回答,现在我在尝试发布时收到了警告,但我的客户希望有一个单独的设置菜单,能够登录到twitter。也许我应该让我的客户相信最初的想法是错误的,而只是用“标准”行为来代替?那将是最好的。这不仅可以为您节省大量工作,而且可以使应用程序保持更好的运行状态,因为您只需访问现有框架即可。如果这回答了您的问题,请标记为正确。在iOS6中使用Twitter框架提示登录警报:该代码在iOS 8上不起作用。2如果合成视图被隐藏,您的代码实际上是如何发送tweet的?我不太喜欢在操作中使用“取消”按钮,并将真正的“取消”按钮放在其他按钮数组中标题。。。似乎唯一的好处是在打破一个非常常见的惯例的同时简化ClickedButtonNatindex:方法。
    if (![TWTweetComposeViewController canSendTweet]) {
            UIAlertView *alertViewTwitter = [[[UIAlertView alloc] 
            initWithTitle:@"No Twitter Accounts" 
            message:@"There are no Twitter accounts configured. You can add or create a Twitter account in Settings." 
            delegate:self 
            cancelButtonTitle:@"Settings"
            otherButtonTitles:@"Cancel",nil] autorelease];

            [alertViewTwitter show];
   }


 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

          if (buttonIndex==0) {
                 TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init];
                 if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
                     [(id <UIAlertViewDelegate>)ctrl alertView:alertView
                             clickedButtonAtIndex:0];
                 }
                 [ctrl release];
          }
   }