在App Delegate中调用IBAction



我想在我的目标c应用程序中添加3d触摸主屏幕快捷方式。当按下UIButton时,我的应用程序的主要部分会起作用。这将调用ViewController.h和ViewController.m 中的方法

- (IBAction)StartScanning:(id)sender;

这允许相机开始工作,并按下正确的视图控制器和所需的方法。

我读了很多演练,但仍然不明白如何在按下三维触摸快捷键时启动此IBAction。

对不起,如果这是一个重复的问题,或者我只是愚蠢。我对这一切有点陌生。

这并不难,正如您所提到的,有很多教程可以帮助您。总之,首先需要将3d触摸代理添加到ViewController.h或.m.<UIViewControllerPreviewingDelegate>

这将使您可以访问显示主屏幕快捷方式所需的委派方法。下面是我的一个应用程序的例子(在这个例子中删除了名称)。

在我的AppDelegate中,首先调用performActionForShortcutItem:completionHandler:并发送用户选择的快捷方式。使用它可以确定如何响应快捷方式。我把快捷方式传给了一个方法handleShortcutItem:shortcutItem",它将决定我将使用哪个故事板(我知道iPad现在没有3D Touch,但我想在苹果推出3D Touch时嵌入代码)。

基于快捷方式,我创建了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中,是将从AppDelegatestartNewMatchgamePressedFromShortcut调用的方法。我还将这些电话记录到我的分析中,这样我就可以跟踪人们使用该功能的次数,这是我强烈建议的。

这并不像最初看起来那么困难。

最新更新