35 votes

Comment ouvrir les préférences / paramètres avec iOS 5.1?

On dirait que iOS 5.1 a cassé le codage d'URL standard pour permettre à un utilisateur d'accéder à une préférence.

Par exemple:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];
 

Fonctionne dans iOS 5.0 mais pas dans iOS 5.1 (appareil et simulateur).

Quelqu'un a-t-il trouvé un moyen de répliquer cette fonctionnalité dans iOS 5.1?

13voto

PJR Points 6126

Il est peu difficile , je reçois par la suppression de la sous-vues en *TWTWeetComposeViewController*, de sorte qu'il ne montre que l'alerte lorsque l'utilisateur n'est pas enregistrées dans et par l'cliquant sur le bouton de réglage , on peut ouvrir la page des paramètres de mon application.

     + (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];
        }

     } 

ici , délégué est votre viewcontroller , si vous utilisez cette méthode à l'intérieur de votre viewcontroller suffit d'utiliser self au lieu de delegate.

EDIT: Si vous avez des obsolète erreurs, utilisez la commande suivante iOS6 compatible code à la place:

- (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];
    }
}

11voto

JoePasq Points 3364

Non, je ne connais pas le moyen de reproduire cette fonctionnalité.

Mais ce que vous pouvez faire est de déposer un radar demandant la restauration. Voici un radar demandant que les schémas soient documentés en premier lieu.

David Barnard a confirmé qu'iOS 5.1 rompait les schémas d'URL des applications, des paramètres.

3voto

Saad Points 5363

tu peux le faire.

 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];
                    }
 

1voto

artysx Points 110

Si vous regardez dans le cadre de Twitter (ce contrôleur de vue Twitter), il contient "prefs: root = TWITTER", la version 5.1 contient également cette ligne. Alors, probablement, Apple a fait quelque chose pour le désactiver pour d'autres applications, comme une clé spéciale dans la méthode Plist ou la méthode "openURL" vérifie en quelque sorte si ce n'est pas une application système.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X