2

我(以及其他许多人)注意到 Apple 将弹出框控制器的外观更改为使用“滑块”窗口,而不是我使用的通常的“弹出框”表格视图。虽然我对新外观没意见,但和其他人一样,我对引入的滑动手势有疑问:

iOS 5.1 滑动手势被 UISplitViewController 劫持 - 如何避免?

对此的修复似乎是将拆分视图控制器方法“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 回答