看起来iOS 5.1已经破坏了用户导航到偏好的标准URL编码。
例如:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];
适用于iOS 5.0,但不适用于iOS 5.1(设备和模拟器)。
有没有人找到在iOS 5.1中复制此功能的方法?
答案 0 :(得分:13)
这有点棘手,我删除了*TWTWeetComposeViewController*
中的子视图,所以它只显示用户未插入时的提醒,点击设置按钮,我们可以在我的应用中打开设置页面。
+ (void)setAlertForSettingPage :(id)delegate
{
// Set up the built-in twitter composition view controller.
TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];
// Create the completion handler block.
[tweetViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
[delegate dismissModalViewControllerAnimated:YES];
}];
// Present the tweet composition view controller modally.
[delegate presentModalViewController:tweetViewController animated:YES];
//tweetViewController.view.hidden = YES;
for (UIView *view in tweetViewController.view.subviews){
[view removeFromSuperview];
}
}
这里,delegate是你的viewcontroller,如果你在viewcontroller中使用这个方法,只需使用self
而不是delegate
。
编辑:如果您收到任何弃用的错误,请改用以下iOS6兼容代码:
- (void)setAlertForSettingPage
{
// Set up the built-in twitter composition view controller.
SLComposeViewController *tweetViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
// Present the tweet composition view controller modally.
[self presentViewController:tweetViewController animated:YES completion:nil];
for (UIView *view in tweetViewController.view.subviews){
[view removeFromSuperview];
}
}
答案 1 :(得分:11)
不,我不知道如何复制此功能。
但是你可以做的是提交请求恢复的雷达。 Here is a radar要求首先记录这些计划。
David Barnard已确认iOS 5.1违反设置应用程序URL方案。
更新:iOS 8 has similar functionality以打开您的应用设置。感谢Apple,Mike和Soto_iGhost。
常量UIApplicationOpenSettingsURLString
(UIApplication Documentation)将打开您应用的设置,而不是Twitter的设置。不完全相同的功能,但比以前更清洁,现在官方认可。
现在,每个应用在“设置”中都有一个用于使用隐私,移动数据,后台应用刷新和通知的位置,这应该会非常有用。
答案 2 :(得分:3)
TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init];
if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
// Manually invoke the alert view button handler
[(id <UIAlertViewDelegate>)ctrl alertView:nil
clickedButtonAtIndex:0];
}
答案 3 :(得分:1)
如果你看一下Twitter的框架(那个Twitter视图控制器),它里面有“prefs:root = TWITTER”,5.1也有这一行。因此,Apple可能会为其他应用程序禁用它,例如plist中的某些特殊键或方法“openURL”以某种方式检查它是否不是系统应用程序。