Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在不更新滚动手柄的情况下更新UIScrollView的子视图_Iphone_Objective C - Fatal编程技术网

Iphone 在不更新滚动手柄的情况下更新UIScrollView的子视图

Iphone 在不更新滚动手柄的情况下更新UIScrollView的子视图,iphone,objective-c,Iphone,Objective C,好的,我有一个子类的UIScrollView,里面有一些子视图,当设备方向改变时,我想更新里面子视图的位置,使它们适合新的方向 当我刚刚更新子视图的位置,然后去滚动时,我注意到滚动手柄是巨大的。。。我的循环遍历了所有子视图并更新了它们的帧,同时也设置了滚动手柄的帧 所以为了避开这件事。。每当我添加子视图时,我都会在它们上设置一个标记。当方向改变时,我的设置框架周围有一个条件,检查视图上的标记是否与我添加的子视图匹配。如果是,则设置帧 int i = 0; for (UIView *gridVi

好的,我有一个子类的UIScrollView,里面有一些子视图,当设备方向改变时,我想更新里面子视图的位置,使它们适合新的方向

当我刚刚更新子视图的位置,然后去滚动时,我注意到滚动手柄是巨大的。。。我的循环遍历了所有子视图并更新了它们的帧,同时也设置了滚动手柄的帧

所以为了避开这件事。。每当我添加子视图时,我都会在它们上设置一个标记。当方向改变时,我的设置框架周围有一个条件,检查视图上的标记是否与我添加的子视图匹配。如果是,则设置帧

int i = 0;

for (UIView *gridViewItem in self.subviews) {

    if (gridViewItem.tag == GRID_CELL) {
        gridViewItem.frame = [self calculateCellPosition:i];
    }

    i++;

}
但是现在我想检测子视图上的触摸,我能想到的最简单的方法是使用tag属性,这样我就知道正在点击哪个子视图。。。但是,该标记当前用于帮助我区分滚动手柄与其他子视图

当我注销UIScrollView的子视图时,我得到了以下信息:

2011-05-08 16:07:56.266 XXXXXX[2096:207] (
"<UIView: 0x5a0d3f0; frame = (16 16; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a09250>>",
"<UIView: 0x5a19d70; frame = (167 16; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a17660>>",
"<UIView: 0x5a1d4f0; frame = (16 137; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a1d520>>",
"<UIView: 0x5a1e300; frame = (167 137; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a1e330>>",
"<UIView: 0x5a1e4f0; frame = (16 258; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a1e520>>",
"<UIView: 0x5a1f320; frame = (167 258; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a1f350>>",
"<UIView: 0x5a20120; frame = (16 379; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a20150>>",
"<UIView: 0x5a20fb0; frame = (167 379; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a20fe0>>",
"<UIView: 0x5a21dd0; frame = (16 500; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a21e00>>",
"<UIView: 0x5a22bb0; frame = (167 500; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a22be0>>",
"<UIView: 0x5a239a0; frame = (16 621; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a239d0>>",
"<UIView: 0x5a247b0; frame = (167 621; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a247e0>>",
"<UIView: 0x5a20f30; frame = (16 742; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a20f80>>",
"<UIView: 0x5a26460; frame = (167 742; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a26490>>",
"<UIView: 0x5a27220; frame = (16 863; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a27250>>",
"<UIView: 0x5a20dd0; frame = (167 863; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a28080>>",
"<UIView: 0x5a28e60; frame = (16 984; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a28e90>>",
"<UIView: 0x5a29c50; frame = (167 984; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a29c80>>",
"<UIView: 0x5a2aa60; frame = (16 1105; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a2aa90>>",
"<UIView: 0x5a2b870; frame = (167 1105; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a2b8a0>>",
"<UIView: 0x5a255a0; frame = (16 1226; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a255f0>>",
"<UIView: 0x5a262f0; frame = (167 1226; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a2d610>>",
"<UIView: 0x5a2e3c0; frame = (16 1347; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a2e3f0>>",
"<UIView: 0x5a2f1d0; frame = (167 1347; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a2f200>>",
"<UIView: 0x5a2ffc0; frame = (16 1468; 135 105); clipsToBounds = YES; tag = 1; layer = <CALayer: 0x5a2fff0>>"
2011-05-0816:07:56.266xxxxxx[2096:207](
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
)

所有子视图上都有我的标记!我看不到滚动手柄?有人知道一种不用像我这样的标签就能识别滚动手柄的方法吗


非常感谢您的帮助!谢谢

我可能不会为此将UIScrollView分为子类。将单个UIView添加到UIScrollView,并将单元格添加到该视图。然后始终使用该视图。不需要标记,并且不会干扰UIScrollViews内部工作。只要内容视图的大小反映其中的单元格,滚动就可以工作。

哦,好的,这很有意义。我会试试的,非常感谢!