2016-04-06 4 views
0

Я хочу добавить ярлыки на главном экране 3d touch к моему объективному приложению. Основная часть моего приложения функционирует при нажатии кнопки UIButton. Это вызывает метод в ViewController.h и ViewController.mПозвоните в IBAction в App Delegate

- (IBAction)StartScanning:(id)sender; 

Это позволяет камере начать функционирование и толкает правильный контроллер представления и желаемые методы.

Я прочел много прохождений, но до сих пор не могу понять, как запустить этот IBAction при нажатии клавиши со стрелкой 3d touch.

Извините, если это повторяющийся вопрос, или я просто глуп. Я немного новичок в этом.

ответ

0

Это не так сложно сделать, и, как вы упомянули, есть много учебников, которые помогут вам. Итак, сначала вам нужно добавить делегата 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. Я также регистрирую эти вызовы в своей аналитике, чтобы я мог отслеживать, сколько раз люди используют эту функцию, что я настоятельно рекомендую.

Это не так сложно, как изначально кажется.

+0

Спасибо за это. Я последовал за ним, но добавил информацию о ярлыке в plist, поскольку он не показывал код выше. Но теперь, похоже, сейчас вам спасибо. – user5394344