それは行うことはそんなに難しいことではありません、あなたが述べたように、チュートリアルの多くは、助けるためにそこにあります。要約すると、まず、ViewController.hまたは.mに3Dタッチデリゲートを追加する必要があります。あなたは、ホーム画面のショートカットを表示する必要があるデリゲートメソッドへのあなたのアクセスを与える<UIViewControllerPreviewingDelegate>
。ここに私のアプリケーションの1つの例があります(この例では名前は削除されています)。私AppDelegate、performActionForShortcutItem:completionHandler:
で
は、最初に呼び出され、ユーザが選択したショートカットを送っています。これを使用して、ショートカットへの対応方法を決定します。ショートカットをメソッドhandleShortcutItem:shortcutItem"
に渡して、どのストーリーボードを使用するか決定しました(私はiPadは3Dタッチがないことを知っていますが、Appleがと出てくるときにコードをビルドしたかったのです)。
ショートカットに基づいて、私は自分のViewControllerを作成し、ショートカットをメソッドlogShortcutUsed
に渡し、ショートカットタイトルを渡します。私のメインのViewController で
#pragma mark - Shortcut Items
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
completionHandler([self handleShortcutItem:shortcutItem]);
}
- (BOOL)handleShortcutItem:(UIApplicationShortcutItem *)shortcutItem {
UIStoryboard *storyboard;
UINavigationController *navController = (UINavigationController *) self.window.rootViewController;
if (IS_IPAD()) {
storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
} else {
storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
}
xxxViewController *vb = (xxxViewController *)navController.topViewController;
if ([shortcutItem.localizedTitle isEqualToString:@"New Match"]) {
[vb logShortcutUsed:shortcutItem.localizedTitle];
[vb startNewMatch];
return TRUE;
} else if ([shortcutItem.localizedTitle isEqualToString:@"New Game"]) {
[vb logShortcutUsed:shortcutItem.localizedTitle];
[vb gamePressedFromShortcut];
return TRUE;
}
return FALSE;
}
、私は、ダイナミックなショートカットを(あなたは静的または動的なショートカットを持つことができます)を作成します。これは、ユーザがアイコンをタッチしたときに見られるものです。私はアイコンも含めて、オプションです。 shortcutItems
は、ちょうどUIApplicationShortcutItem
の配列です。同じのViewControllerで
- (void)setupDynamicShortcuts {
UIApplicationShortcutItem *newMatch = [[UIApplicationShortcutItem alloc] initWithType:@"$(PRODUCT_BUNDLE_IDENTIFIER).NewMatch"
localizedTitle:NSLocalizedString(@"New Match", @"Start a new match")
localizedSubtitle:NSLocalizedString(@"Start a new match", @"Start a new match button.")
icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"Sport Net-50"]
userInfo:nil];
UIApplicationShortcutItem *newGame = [[UIApplicationShortcutItem alloc] initWithType:@"$(PRODUCT_BUNDLE_IDENTIFIER).NewGame"
localizedTitle:NSLocalizedString(@"New Game", @"Start a new game")
localizedSubtitle:NSLocalizedString(@"Start a new game", @"Start a new game button.")
icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"volleyball-50"]
userInfo:nil];
[UIApplication sharedApplication].shortcutItems = @[newMatch, newGame];
}
AppDelegate、startNewMatch
とgamePressedFromShortcut
から呼び出されるメソッドです。また、これらの呼び出しをアナリティクスに記録するので、人々がこの機能を何回使用したかを追跡することができます。これは私が強く推奨するものです。
それが最初に思ったほど難しいことではありません。
出典
2016-04-06 21:36:44
fsb
ありがとうございます。私はしかし、上記のコードを使用して表示されていなかったので、plistのショートカット情報を追加しました。しかし、今、あなたに感謝して動作するようです。 – user5394344