2015-01-21 29 views
5

Uygulamamda UIActivityViewController'u kullanarak bir şeyler paylaşmak istiyorum.Uygulama iOS 8'de çalışıyor, ancak iOS 7'de değil

UIActivityViewController *controller = [[UIActivityViewController alloc] 
                initWithActivityItems:@[text, shortURL, image] 
                applicationActivities:nil]; 
[controller setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) { 
      if (! completed){ 
      // Here I do some stuff irrelevant to the question 
     } 
    }]; 

Bu kod, ben tamamen ne olduğunu anlamak iddia etmek istemiyoruz kopyalanan (ve değiştirilmiş) beri:

paylaşım etkinliği başarılı olduğunu emin olmak için, bu kod var burada oluyor.

Ne yaptıklarını biliyorum, ve bu benim sorumdur, yukarıdaki kod iOS 8'de düzgün çalışıyor, ancak iOS 7'de, donanım veya simülatörde çalışmıyor.

Birilerinin bana burada neler olduğunu açıklayabileceğini umuyorum. o iOS 8.

tanıtılan Ne aradığınız artık kullanım dışı completionHandler özelliktir gibi

+1

Hata buldunuz mu? – AstroCB

+0

Evet, diyor ki: '- [UIActivityViewController setCompletionWithItemsHandler:]: örneğine gönderilen tanınmayan seçici 0x7beb0730' – Sjakelien

+0

Bu özellik iOS 7 –

cevap

9

completionWithItemsHandler özelliği iOS 7'de kullanılamaz;

if([[UIApplication sharedApplication] respondsToSelector:(@selector(setCompletionWithItemsHandler:))]){ 
     [controller setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) { 
      if(!completed){ 
       // Out of scope of question 
      } 
     }]; 
    }else{ 
     [controller setCompletionHandler:^(NSString *activityType, BOOL completed) { 
      if(!completed){ 
       // Out of scope of question 
      } 
     }]; 
    } 
} 
: Eski işleyicisi kullanmak, Dağıtım hedef iOS 8 altında ise, sadece bunu kullanabilirsiniz, ancak geleceğe dönük olmak istiyorsanız sizde yoksa, yeni işleyicisi desteklenip desteklenmediğini kontrol edebilir

Ayrıca, kısalık için bu atlanmış olabilir, ancak aslında başlatılıyor sonra görünüm denetleyicisi sunmak önemlidir:

[self presentViewController:controller animated:YES completion:nil]; 
+0

teşekkürler. Görünüm denetleyicisini sundum – Sjakelien

1

Tamam, bu nedenle bu benim yaptığım budur. Büyük olasılıkla Kremelur bunu genel terimlerle yanıtladı, ama bunu anlamak için çok fazla acemiyim. Yani, bazı çaprazlamalardan sonra bazı şeyleri kopyalayıp yapıştırdım. Umarım bu birisine herhangi bir kullanım içindir.

[controller setCompletionHandler:^(NSString *activityType, BOOL completed) { 
     NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed); 
     if (! completed){ 
      // Out of scope of question 
     } 
    }]; 

Bu kod hem iOS7 hem de iOS8'de düzgün çalışıyor gibi görünüyor.

İlgili konular