2012-11-22 3 views
4

내 앱에서 Twitter 작성보기를 열려고하지만 화면이 너무 오래 표시되어 표시되지 않습니다!SLComposeViewController를 사용하여 presentViewController를 더 빠르게 만드는 방법은 무엇입니까?

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) 
{ 

    SLComposeViewController *tweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

    [tweet setInitialText:@"initial text "]; 


    [self presentViewController:tweet animated:YES completion:^ 
    { 

    }]; 
} 

그러나 화면을 보여주기 위해 5 ~ 8 초 정도 걸립니다 :

나는 사용자가 트위터 버튼을 탭하면 다음 코드를 사용하기 시작! 나에게는 너무 길기 때문에 즉시 갈 수있는 앱을 보았습니다. 이 기능 만 가진 새 프로젝트를 만들었 기 때문에 내 앱에서 문제가되지 않습니다.

는 그래서 지연이 화면이 인스턴스화 순간이라고 생각, 그래서 난 내 헤더에 내 트윗 화면을 선언하기로 결정하고, viewDidAppear이 일부 이동 :

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) 
{ 

tweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

[tweet setInitialText:@"initial text "]; 

와상의를 버튼 방식은 다음과 같습니다.

if(tweet) 
[self presentViewController:tweet animated:YES completion:^ 
{ 

}]; 

그러나 빠릅니다. iPhone 4를 사용하고 있으며 Twitter 작성 프로그램을 만드는 앱이 정말 빠릅니다. 그 방법을 아는 사람이 있습니까?

+0

남겨놓은 쓰레드 조각을 소비하지 않는 한이 일이 일어나지 않아야합니다. 시뮬레이터에서 느린 애니메이션을 활성화 했습니까? –

+0

안녕하세요. @ 0x7fffffff .. 답장을 보내 주셔서 감사합니다. 느린 애니메이션을 사용하도록 설정했는지 알지 못했습니다. =) 어쨌든 기기를 사용하여 테스트 중입니다 ... –

+0

예, 뭔가가 올바르게 움직이는 지 확인하려고합니다. 그리고이 함수 바로 위에 어떤 코드가 있습니까? –

답변

0

나는 똑같은 문제가 있었다. 그것이 나를 미치게했다. 메인 큐의 dispatch_async로 해결했습니다.

// Perform this on the main queue 
__weak __typeof(self) weakSelf = self; 

dispatch_async(dispatch_get_main_queue(), ^{ 
    __strong __typeof(self) strongLocalSelf = weakSelf; 


     SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
     [controller setInitialText:@"Share message"]; 
     [controller addURL:@"http://www.someURL.com"]; 
     [strongLocalSelf presentViewController:controller animated:NO completion:nil]; 


}); 
+0

불행히도 이것은 작동하지 않습니다. – mkeremkeskin

0

이 문제로 하루 종일 나를 괴롭혔습니다. 마지막으로 SLComposeViewController를 더 빠르게 보이게 만드는 트릭을 얻었습니다. 그 때 처음으로 SLComposeVC로드하려는 경우, SLComposer 메인 스레드에서 많은 리소스를 취할 것입니다,하지만 그 후, 그 완벽하게 정상적인 지연없이 나타납니다 ... 그래서 우리는 SLCompose로드해야 할 것 같아요 우리의 뷰 컨트롤러 (바로보기를로드)과 비올라의보기가 있습니다 .. SLComposerView 직접

그냥 경우

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ .... 

//loading the view...make twitter share dialog appear with no dellay 
    if(NSClassFromString(@"SLComposeViewController") != nil){ 
     SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
     [composeViewController view]; 
    } 
    ... 
} 
  • 죄송 AppDelegate에이 코드를 추가 ...보기에 표시됩니다 내 영어가 완벽하지 않습니다. 나는 원주민이 아닙니다.
+0

불행히도 도움이되지 않는 것 같습니다. –

관련 문제