2

私は(他の多くの人たちと一緒に)Appleがポップオーバーコントローラーの外観を、私が使用していた通常の「ポップオーバー」テーブルビューではなく「スライダー」ウィンドウを使用するように変更したことに気づきました。新しい外観には問題はありませんが、他の人と同じように、導入されたスワイプジェスチャに問題があります。

UISplitViewControllerによってハイジャックされたiOS5.1スワイプジェスチャ-回避する方法は?

これに対する修正は、分割ビューコントローラーメソッド「presentWithGesture」を「NO」に設定することのようです。

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

これは、ユーザーがiOS 5.1を使用している場合にうまく機能しますが、このコードがiOS 5.0以下を使用して実行されている場合、このメソッドはiOS 5.1でのみ使用可能であるため、例外がスローされます。

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

このメソッドを使用せずにこのジェスチャを削除して、iOSの5.0以下との下位互換性を保つことは可能ですか?

4

1 に答える 1

9

下位互換性のタイプについては、最初に新しいプロパティのsetterメソッドの存在を確認してください...

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

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

于 2012-04-09T23:25:27.767 に答える