【问题标题】:UISplitViewController problems with IOS 5.1IOS 5.1 的 UISplitViewController 问题
【发布时间】:2012-03-09 07:35:09
【问题描述】:

我有问题,

我正在使用适用于 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                   
};

【问题讨论】:

  • 可以在这里公开讨论 iOS 5.1 的功能吗?由于 Xcode 和新版本是通过 App Store 分发的,因此不再那么明显地可能处于 NDA 之下。在尝试下载最新的 SDK 时,我缺少红色的 NDA 信息框。

标签: xamarin.ios uisplitviewcontroller ios5.1


【解决方案1】:

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

5.1中的UISplitViewController类采用滑动展示 呈现左视图时的样式(以前只在邮件中看到)。 当演示文稿由 由委托方法或由 在右视图中滑动手势。没有额外的 API 采用 需要获取此行为以及所有现有 API,包括 由委托提供的 UIPopoverController 实例,将 继续像以前一样工作。如果您的手势不支持 应用程序,设置拆分视图的 PresentWithGesture 属性 控制器设置为 NO 以禁用手势。但是,禁用 不鼓励使用手势,因为它的使用保留了一致的用户 跨所有应用程序的经验。

Here(需要登录)。

更新:

据我了解,我们可以在 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...

this 问题中的一些有用信息,用于 ObjC。

【讨论】:

  • 我尝试将属性“presentsWithGesture”设置为 false(NO),但没有任何变化。=(
  • @Dimitris Tavlikos:我将“presentsWithGesture”属性解释为拆分控制器仍将显示相同的行为,但如果从左向右或向后滑动,则不会发生任何事情。或者换句话说:如果你的应用本身已经有类似的滑动手势,你会想要将此属性设置为 false。
  • 但是为了回答我的问题。如何停用此“新 UISplitViewController”并获取旧 UISplitViewController?或者这是不可能的?
  • @Alex:刚刚更新了我的答案,请原谅延迟。 Krumelur,关于“presentsWithGesture”的说法是正确的。
  • @DimitrisTavlikos 好的,非常感谢,但我已经辞职了,现在我正在使用“新的”可滑动 UISplitViewController。但我会尝试您的解决方案并将您的答案标记为正确答案。
【解决方案2】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2012-03-30
相关资源
最近更新 更多