【问题标题】:Objective C Tap Gesture no working after frame resizeObjective C Tap Gesture在调整帧大小后不起作用
【发布时间】:2015-04-08 11:03:08
【问题描述】:

我制作了一个屏幕分成两半的 ipad 应用程序。每一面都包含一个容器,每个容器都包含 UIView。

在左侧的 uiView 中,我有一个 uiScrollView,里面有多个元素(自定义 uiview),就像一个网格,但带有滚动,每个元素都支持点击手势。 当我点击每个元素时,它们工作正常并且表现得像他们应该做的那样。假设他们做了一个 NSLog(@"tapped!")。

当我调整包含滚动视图的整个视图或容器的大小时,问题就来了:

navigationVC.view.frame = CGRectMake(0,0, 338,768);

水龙头停止工作!但是,如果我将大小调整回原来的框架,点击会再次开始工作。

navigationVC.view.frame = CGRectMake(0,0, originalWidth ,768);

我认为问题是当我调整滚动视图大小时元素会重新排列,但实际上并非如此。
当我向左或向右滑动整个应用程序时,框架正在调整大小。

编辑:

行为图:http://i.imgur.com/4vKpHLQ.png?1

EDIT2:还没弄明白,但我现在看到元素绑定在调整框架大小时正在发生变化。

【问题讨论】:

  • 请在更改框架时检查滚动视图的contentSize,并设置滚动视图的属性clipsToBounds = YES。现在旋转设备,看看你是否还能看到 UIViews
  • 嘿,clipsToBounds = YES 已设置。左右交换时的滚动内容大小为: (width=663, height=7193) 旋转设备并保持它的宽度 = 663,水龙头工作正常。
  • 不,不是。当框架改变大小而不是位置时,问题仍然存在。
  • 好的,所以我做了更多测试,现在我只将帧宽度从 660 更改为 600 而不是 330 .. 发生的情况是水龙头可以工作,但仅在半个元素以上. (元素有 150 像素)所以我假设只有 90 像素在接受点击。这太奇怪了。。也许每次我更改框架时,我都必须删除并再次添加手势?
  • 可以添加 UI 截图吗?

标签: objective-c resize frame tap


【解决方案1】:

知道了!

问题是,当我调整滚动视图的大小时,elements.Bounds 也在发生变化。然后我去挖掘为什么...只能是锚之类的东西...然后我开始更改我的 XIB 上的一些属性。

在“Simulated Metrics”下,将“Size”下拉菜单从“Freeform”(添加 150、45)更改为“Inferred”。

在 initWithCoder 上强制设置大小,编译,它工作。

感谢 Burhanuddin Sunelwala 尝试与我一起调试。

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 2020-11-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多