Это не так сложно сделать, и, как вы упомянули, есть много учебников, которые помогут вам. Итак, сначала вам нужно добавить делегата 3d touch на ваш ViewController.h или .m. <UIViewControllerPreviewingDelegate>
Это даст вам доступ к методам делегатов, которые вам нужны для отображения ярлыков на главном экране. Ниже приведен пример одного из моих приложений (имя удалено в этом примере).
В моем AppDelegate, performActionForShortcutItem:completionHandler:
вызывается первым и отправляется ярлык, выбранный пользователем. Используйте его, чтобы определить, как реагировать на ярлык. Я передал ярлык методу, handleShortcutItem:shortcutItem"
, который определит, какую раскладку я буду использовать (Я знаю, что сейчас нет iPad в iPad, но я хотел бы построить код, когда 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
.
- (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
. Я также регистрирую эти вызовы в своей аналитике, чтобы я мог отслеживать, сколько раз люди используют эту функцию, что я настоятельно рекомендую.
Это не так сложно, как изначально кажется.
Спасибо за это. Я последовал за ним, но добавил информацию о ярлыке в plist, поскольку он не показывал код выше. Но теперь, похоже, сейчас вам спасибо. – user5394344