当我通过快速操作启动我的应用程序时,我很难弄清楚如何让我的快速操作发挥作用。
但是,如果应用程序在后台并通过快速操作重新启动,我的快速操作将起作用。
当我尝试直接从快速操作启动应用程序时,应用程序会打开,就好像它是通过简单地点击应用程序图标启动的一样(即它什么也不做)。
这是我的 App Delegate 的一些代码。
在didFinishLaunchingWithOptions 中:
UIApplicationShortcutItem *shortcut = launchOptions[UIApplicationLaunchOptionsShortcutItemKey];
if(shortcut != nil){
performShortcutDelegate = NO;
[self performQuickAction: shortcut fromLaunch:YES];
}
该方法称为:
-(BOOL) performQuickAction: (UIApplicationShortcutItem *)shortcutItem fromLaunch:(BOOL)launchedFromInactive {
NSMutableArray *meetings = [self.fetchedResultController.fetchedObjects mutableCopy];
[meetings removeObjectAtIndex:0];
unsigned long count = meetings.count;
BOOL quickActionHandled = NO;
if(count > 0){
MainViewController *mainVC = (MainViewController *)self.window.rootViewController;
if(launchedFromInactive){
mainVC.shortcut = shortcutItem;
}
else{
UINavigationController *childNav;
MeetingViewController *meetingVC;
for(int i = 0; i < mainVC.childViewControllers.count; i++){
if([mainVC.childViewControllers[i] isKindOfClass: [UINavigationController class]]){
childNav = mainVC.childViewControllers[i];
meetingVC = childNav.childViewControllers[0];
break;
}
}
self.shortcutDelegate = meetingVC;
if ([shortcutItem.type isEqual: @"Meeting"]){
NSNumber *index = [shortcutItem.userInfo objectForKey:@"Index"];
[self.shortcutDelegate switchToCorrectPageWithIndex: index launchedFromInactive:NO];
quickActionHandled = YES;
}
}
}
唯一需要执行的操作是我的页面视图控制器(嵌入在 meetingVC 中)应根据所选快捷方式切换到某个页面。
关于是什么导致快捷方式在使用它启动而不是从后台重新打开应用程序时不做任何事情的任何想法?