如何打开iOS 5.1的偏好设置?
看起来像iOS 5.1打破了标准的URL编码导航用户偏好。
例如:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];
适用于iOS 5.0,但不适用于iOS 5.1(包括设备和模拟器)。
有没有人find了在iOS 5.1中复制这个function的方法?
不,我不知道复制这个function的方法。
但是你可以做的是提交一份请求修复的雷达。 这是一个雷达,要求首先logging这些scheme。
David Barnard已经确认iOS 5.1打破了设置应用程序的URLscheme。
更新 : iOS 8具有类似的function来打开您的应用程序的设置。 感谢Apple, Mike和Soto_iGhost 。
常量UIApplicationOpenSettingsURLString
(UIApplication Documentation)将打开您的应用程序的设置,而不是说Twitter的设置。 不完全相同的function,但比以前更清洁,现在正式承认。
这应该是特别有用的,现在每个应用程序在使用隐私,手机数据,后台应用程序刷新和通知设置的地方。
这是有一点棘手,我通过删除*TWTWeetComposeViewController*
的子视图,所以它显示只有当用户没有进入时提醒,通过点击设置button,我们可以打开设置页面在我的应用程序。
+ (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]; } }
在这里,委托是你的viewcontroller,如果你在viewcontroller里面使用这个方法,只需要使用self
而不是delegate
。
编辑:如果您得到任何不build议使用的错误,请使用下面的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]; } }
你可以这样做。
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]; }
如果你在Twitter的框架(那个Twitter视图控制器)里面看,里面有“prefs:root = TWITTER”,5.1也有这个行。 因此,苹果可能会为其他应用程序禁用它,比如plist中的一些特殊键或“openURL”方法以某种方式检查它是否不是系统应用程序。