Yapmak zor değil ve bahsettiğiniz gibi, orada yardımcı olacak birçok öğretici var. Özet olarak, ilk önce 3 boyutlu dokunmatik delegeyi ViewController.h veya .m'ye eklemeniz gerekir. <UIViewControllerPreviewingDelegate>
Bu, ana ekran kısayollarını göstermeniz için gereken temsilci yöntemlerine erişmenizi sağlar. İşte benim uygulamalarımdan birinin bir örneği (bu örnekte adı kaldırıldı).
AppDelegate, performActionForShortcutItem:completionHandler:
numaralı telefondan önce çağrılır ve kullanıcının seçtiği kısayolu gönderir. Kısayolu nasıl yanıtlayacağınızı belirlemek için kullanın. Hangi yöntemi kullanacağımı belirleyen bir yöntem olan handleShortcutItem:shortcutItem"
kısayolunu kullandım (Şu anda iPad'lerde 3D Touch olmadığımı biliyorum ancak Apple'ın bir ile çıktığı zaman kodu oluşturmak istedim).
Kısayolu temel alarak ViewController'ı yaratıyorum ve kısayolu, kısayol başlığından geçen logShortcutUsed
yöntemine iletiyorum. benim ana viewController yılında
#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;
}
, ben dinamik kısayollar (Eğer statik veya dinamik kısayollarını olabilir) oluşturun. Bu, kullanıcı tarafından 3D simgesine dokunduğunda görülecektir. Ben de bir simge dahil, bu isteğe bağlıdır. shortcutItems
sadece UIApplicationShortcutItem
s dizisidir. Aynı viewController olarak
- (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];
}
AppDelegate,
startNewMatch
ve
gamePressedFromShortcut
çağrılabilir olacak yöntemlerdir. Bu çağrıları analitiğime de kaydediyorum, böylece insanların bu özelliği kaç kez kullandığını izleyebilirim;
Başlangıçta göründüğü kadar zor değil.
Bunun için teşekkürler. Takip ettim, ancak yukarıdaki kodu kullanarak göstermediği için plisteki kısayol bilgisini ekledim. Ama işe yaramış görünüyor, teşekkürler. – user5394344