2016-04-06 22 views
0

Hedef c uygulamasına 3 boyutlu dokunmatik ana ekran kısayolları eklemek istiyorum. UIButton'a basıldığında uygulamamın ana kısmı çalışır. Bu, makine çalışmayabilir başlatmak sağlar ve doğru görünümü denetleyicisi ve istenen yöntemler iter ViewController.h yöntemi çağırır ve ViewController.mApp Delegate'de IBAction'ı çağırın

- (IBAction)StartScanning:(id)sender; 

.

Pek çok örnek okuduğum halde yine de 3B dokunma kısayoluna basıldığında bu IBAction'ı nasıl başlatacağımı anlayamıyorum.

Eğer bu tekrar soru ise özür dilerim ya da sadece aptallık yapıyorum. Bunların hepsine biraz yeniyim.

cevap

0

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.

+0

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

İlgili konular