2016-04-06 9 views
0

私はObjective Cのアプリに3Dタッチのホーム画面のショートカットを追加したいです。 UIButtonが押されたとき、私のアプリの主要部分が機能します。これは、カメラが機能を開始することができ、正しいビューコントローラと所望の方法を押すViewController.hでメソッドを呼び出し、ViewController.mコールIBAction

- (IBAction)StartScanning:(id)sender; 

私は多くのウォークスルーを読みましたが、それでも3Dタッチショートカットが押されたときに、このIBActionを開始する方法を理解することはできません。これは、繰り返し質問があるか、私は愚かなことしていた場合

申し訳ありません。私はこれのすべての少し新しいです。

答えて

0

それは行うことはそんなに難しいことではありません、あなたが述べたように、チュートリアルの多くは、助けるためにそこにあります。要約すると、まず、ViewController.hまたは.mに3Dタッチデリゲートを追加する必要があります。あなたは、ホーム画面のショートカットを表示する必要があるデリゲートメソッドへのあなたのアクセスを与える<UIViewControllerPreviewingDelegate>

。ここに私のアプリケーションの1つの例があります(この例では名前は削除されています)。私AppDelegateperformActionForShortcutItem: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]; 

} 

AppDelegatestartNewMatchgamePressedFromShortcutから呼び出されるメソッドです。また、これらの呼び出しをアナリティクスに記録するので、人々がこの機能を何回使用したかを追跡することができます。これは私が強く推奨するものです。

それが最初に思ったほど難しいことではありません。

+0

ありがとうございます。私はしかし、上記のコードを使用して表示されていなかったので、plistのショートカット情報を追加しました。しかし、今、あなたに感謝して動作するようです。 – user5394344