2

我有个问题,

我正在为 IOS 5.1 使用 Monotouch 5.2.8 编程。

但自从 IOS 5.1 更新后,我的 iPad 配置了 UISplitViewController,因此它停靠在左侧,而不是作为弹出窗口呈现。

它适用于 IOS 5.0,但在 5.1 中我遇到了这个问题。

这是我的 UISplitViewController 的源代码:

splitViewController = new UISplitViewController ();
splitViewController.WeakDelegate = detailViewController;                
splitViewController.ViewControllers = new UIViewController[] {
     navigationController,
     detailViewController                   
};
4

2 回答 2

5

来自 Apple 的 iOS 5.1 SDK 发行说明:

在 5.1 中,UISplitViewController 类在呈现左视图时采用了滑动呈现样式(以前只在 Mail 中看到)。当通过委托方法提供的现有条形按钮项或通过右视图中的滑动手势启动演示时,使用此样式。无需额外的 API 采用即可获得此行为,所有现有 API,包括委托提供的 UIPopoverController 实例的 API,将继续像以前一样工作。如果您的应用程序不支持该手势,请将拆分视图控制器的 PresentWithGesture 属性设置为 NO 以禁用该手势。但是,不鼓励禁用手势,因为使用它可以在所有应用程序中保持一致的用户体验。

在这里(需要登录)。

更新:

根据我对以上的了解,我们可以在 iOS 5.1 中与主控制器的自动弹出框外观告别。

我看到的唯一可能保持“旧”外观的方法是实现我们自己的UIPopoverController并利用ShouldHideViewController委托方法。值得庆幸的是,有了 MonoTouch,我们将该方法作为UISplitViewController类中的属性提供,使事情变得更简单。

不过,我确实有一种奇怪的行为。在我的 Mac 上使用 iOS SDK 5.1,在我的 iPad 上使用 iOS 5.1;在设备上,我得到“滑动”外观,而在模拟器上,我得到“旧”弹出式外观​​。这是最新的稳定版本 MonoTouch 5.2.4。此外,它不包含PresentsWithGesture属性。我尝试通过 MonoTouch.ObjCRuntime 消息将其值设置为 false,但没有运气。选择器一直返回 true。所以我无法停用滑动手势。

甚至尝试创建我自己的UIPopoverController并将其分配为拆分控制器中的主控器,看看会发生什么。不起作用,因为UIPopoverController不是UIViewController...

这个问题中的一些有用信息,对于 ObjC。

于 2012-03-09T08:06:40.853 回答
2

事实证明,您可以presentsWithGesture在应用程序委托中禁用 ,但是一旦呈现视图控制器,就无法更改它。

我需要在登录过程中禁用左视图控制器的外观,但后来发现我无法启用它。

于 2012-07-24T06:52:03.793 回答