2

Appleはpopoverコントローラーの外観を、通常の「ポップオーバー」テーブルビューではなく「スライダー」ウィンドウを使用するように変更したことに気付きました。使用された。私は新しい外観を持つ大丈夫ますが、他の人のように私が導入されたスワイプジェスチャーで問題を抱えている:UIPopoverController iOS 5.1以降のUISplitViewControllerでのジェスチャー処理

iOS 5.1 swipe gesture hijacked by UISplitViewController - how to avoid?

このための修正は、分割ビューコントローラメソッド「presentWithGestureを設定することであると考えられます"〜"いいえ "この方法は、iOSの5.1のためにのみ利用可能ですので、

UISplitViewController *splitViewController = [[UISplitViewController alloc] init]; 
splitViewController.presentsWithGesture = NO; 

このコードは以下のiOS 5.0以上を使用して実行された場合、ユーザは、しかし、iOSの5.1を使用している場合、これは素晴らしい作品は、例外がスローされます。

Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[UISplitViewController setPresentsWithGesture:]: unrecognized selector 

この方法を使わずにこのジェスチャーを取り除くことができるので、iOS 5.0以降と下位互換性がありますか?

、下位互換性のいずれかのタイプのために

答えて

9

、最初の新しいプロパティのsetterメソッドが存在するかどうかをチェック...

if ([mySplitViewController respondsToSelector:@selector(setPresentsWithGesture:)]) { 
    [mySplitViewController setPresentsWithGesture:NO]; 
} 

あなたがUISplitViewController.viewを追加する前に明らかにあなたがこれを行う必要があります注意あなたの窓。私は、その時点でプロパティが調べられ、ジェスチャ認識機能が追加されているかどうかを推測しています。ビューを追加した後にプロパティを変更した場合、それには識別可能な効果はありません。

+4

ビューを追加した後でプロパティを変更する場合は、次のコードを使用できます。[spv.view setNeedsLayout]; spv.delegate = nil; spv.delegate = self; – daveywc

+0

ありがとうございました。私はあまりにも多くの時間を節約します.... –

+0

はい、私はspv.delegate = nilを追加することに同意します。 spv.delegate = selfは、実際にその動作を即座に変更できるようにします。良くやった! – Phamer

関連する問題