2016-03-04 39 views
6

私はこのバグレポートを私のアプリに持ってきました...実際の電話機やビューコントローラにかかわらず、アクティビティビューコントローラは突然この奇妙な狭い形状です。何が間違って行くことができUIActivityViewControllerは奇妙なサイズと形状を持っています

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[message] applicationActivities:nil]; 
[self presentViewController:activityViewController animated:YES completion:nil]; 

Narrow view controller

これは、数ヶ月で触れられていないいくつかのプレーンバニラコードで起こっているのでしょうか?私はこの問題のトラブルシューティングを開始する場所についても考えることができません。

+0

popoverPresentationControllerプロパティを設定してみてください、あなたはアプリデリゲート –

+0

であなたのウィンドウサイズを設定している1/3のiPadのこのスクリーンショットのですか? – techloverr

+2

毎回再現可能ですが、テスト用のコードを提供してください – techloverr

答えて

1

あなたの自己の見解を確認する必要があります。おそらくその幅がactivityViewControllerの幅より小さくなり、このバグが発生します。

2

self.view.frame.size.widthが問題です。あなたはNSLogself.viewとあなたのフレームを見つけることができます。簡単な回避策は次のとおりです。

[self.view.window.rootViewController presentViewController:activityViewController animated:YES completion:nil]; 
1

これらの種類のバグが発生し、実際にあなたの忍耐力をテストし、あなたに挑戦します。私は明確な答えを与えることはできませんが、私はあなたにこれをトラブルシューティングする方法についていくつかのヒントを与えることができます!

私が提案するのは、開発マシンでこれを最初に再作成しようとすることです。次に、遊んで問題の原因を調べてみてください。試してみるべきことがいくつかあります。

  • 異なるOSを搭載した複数のデバイスでこれを実行すると、パターンを特定できる場合があります。

  • initWithActivityItems」の値を変更し、問題が発生しているかどうかを で確認してください。

  • 異なるビューコントローラから ActivityViewControllerを作成しようとすると、問題が存在するかどうかを確認してください。

  • コードを実行し、 が無視されたという警告が表示されていないか確認してください。特に、ストーリーボードを使用して ビューを作成している場合は、

私はこれが答えではないけど、私はコメントとして、このような長い応答を投稿することができません。

2

場合によっては発生することがあります。あなたはこのバグを再現しようとしたことがあり、この

NSArray *Items = [NSArray arrayWithObjects: 
        @"Checking Test App", nil]; 
UIActivityViewController *activity=[[UIActivityViewController alloc]initWithActivityItems:Items applicationActivities:nil]; 
[self presentViewController:activity animated:YES completion:nil]; 

または

NSString *string = NSLocalizedString(@"shareString", nil); 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] 
                initWithActivityItems:@[string] applicationActivities:nil]; 

[activityViewController setCompletionWithItemsHandler: 
^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *error) 
{ 
    if (completed) { 
     NSLog(@"sharing complete"); 
    } else 
    { 
     NSLog(@"cancelled"); 
    } 
}]; 

[self presentViewController:activityViewController animated:YES completion:^{ 
}]; 
1

を試してみてください?このバグがどのように作成されているのか正確なシナリオがない場合は、解決策を作成できません。配列内の項目を更新し、そのバグがまだ存在するかどうかを確認してください。この種の事態はときどき起こりますが、このシナリオを再現しない限り、バグと呼ばれることはありません。

任意の方法あなたがユニバーサルアプリで作業している場合ActivityView

ActivityViewController.popoverPresentationController.sourceView = self.view; 
[self presentViewController:activityViewController animated:YES completion:nil]; 

を提示する前に、コードの行の下に追加し、私はではなく、解決策を探しての最初の問題を掘るを提案します。私はActivityViewのこのような奇妙な振る舞いをこれまで見たことがありません。なぜこれが起きたのか分かっていれば、すべてのiOSデベロッパーにとって役に立ちますになります。あなたがiPadである場合

1

sourceRect

NSString *string = NSLocalizedString(@"shareString", nil); 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[string] applicationActivities:nil]; 

activityVC.popoverPresentationController.sourceView = self.view; 
activityVC.popoverPresentationController.sourceRect = CGRectMake(self.view.bounds.size.width/2.0, self.view.bounds.size.height-50, 1.0, 1.0); 

[self presentViewController:activityVC animated:YES completion:nil];