這並不難,正如你所說,有很多教程可以幫助你。總之,首先你需要將3D touch委託添加到你的ViewController.h或者.m。 <UIViewControllerPreviewingDelegate>
這將讓您訪問您需要顯示主屏幕快捷方式的委託方法。以下是我的一個應用程序示例(在此示例中名稱已刪除)。
在我的AppDelegate,performActionForShortcutItem:completionHandler:
被首先調用併發送用戶選擇的快捷方式。使用它來確定如何響應快捷方式。我通過了一個方法的快捷方式,handleShortcutItem:shortcutItem"
,這將確定我會使用哪個故事板(我知道iPad中現在沒有3D Touch,但是我想在Apple出來時使用一個構建代碼)。
基於快捷方式,我創建我的ViewController並將快捷方式傳遞給方法logShortcutUsed
,傳入快捷標題。
#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;
}
在我的主要的ViewController,我創建了動態快捷鍵(你可以有靜態或動態的快捷方式)。這是用戶在3D觸摸圖標時會看到的內容。我還包括一個圖標,這是可選的。 shortcutItems
只是一組UIApplicationShortcutItem
s。
- (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];
}
同樣的ViewController是將從AppDelegate中,startNewMatch
和gamePressedFromShortcut
被調用的方法。我還將這些電話記錄到我的分析中,以便我可以跟蹤人們使用此功能的次數,這是我強烈建議的。
這並不像最初看起來那麼困難。
來源
2016-04-06 21:36:44
fsb
謝謝你。然後,我繼續在plist中添加快捷方式信息,因爲它沒有使用上面的代碼顯示。但它現在似乎工作,謝謝。 – user5394344