uiview 的一部分不会调用 touchesBegan 以在 uisplitview 上查看

Posted

技术标签:

【中文标题】uiview 的一部分不会调用 touchesBegan 以在 uisplitview 上查看【英文标题】:Part of the uiview doesn't call touchesBegan for view on top of uisplitview 【发布时间】:2010-09-15 15:46:26 【问题描述】:

我正在编写一个带有 uisplitview 的 ipad 应用程序。一旦用户点击一个按钮,我通过从堆栈中删除 uisplitview 并推送新视图来全屏显示另一个视图。我遇到的问题是新的 uiview 只能在屏幕的 3/4 处获得 touchesBegan。似乎这与 uisplitview 中的 uidetailview 使用的区域相同。这几天我一直在尝试解决这个问题,但没有成功。

uisplitview 被合成并被添加到 didFinishLaunchingWithOptions 中,如下所示:

[窗口添加子视图:splitViewController.view];

[窗口 makeKeyAndVisible];

然后,当用户触摸按钮时,我会这样做:

NewViewController *newViewController = [NewViewController alloc];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newViewController];

navController.modalPresentationStyle = UIModalPresentationFullScreen; navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self.navigationController presentModalViewController:navController animated:YES];

[newViewController 发布];

[导航控制器发布];

【问题讨论】:

【参考方案1】:

检查视图边界的大小。它应该和 iPad 屏幕一样大。即 1024x768(或 768x1024)。

【讨论】:

我到电脑后会检查一下。谢谢 视图是 748 X 1024,但在我增加尺寸后,我仍然没有触摸到。 即使尺寸是 748 X 1024,我也只能触摸到 3/4 的屏幕。模拟器处于纵向模式,从顶部到 3/4,我得到了触摸,对于屏幕的最后 1/4,根本没有调用 touchesBegan。 您能否发布一些有关 uisplitview 生成位置以及如何使用新视图切换的代码?【参考方案2】:

很久以前...但也许其他人需要答案。我有同样的问题。我的错是我用纵向模式(1024+768)初始化了 UIWindow,但这是错误的。无论您如何旋转 iPad,窗口都不会旋转,并且必须具有纵向尺寸 (768x1024)。

【讨论】:

以上是关于uiview 的一部分不会调用 touchesBegan 以在 uisplitview 上查看的主要内容,如果未能解决你的问题,请参考以下文章

如果 layoutIfNeeded() 被调用,UIView 约束不会动画

iPhone UIView touchesMoved: withEvent: 不会在 UIView 上使用手势识别器调用

连续调用几个 [UIVIew setFrame:] 并不会全部执行

如果初始帧为 CGRectZero,则不会调用自定义 UIView 的 drawRect

当从不同的类调用更改时,UIView IBOutlet 不会更改

UITableView 标题部分的高度不会为自定义 UIView() 类自动调整