Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Ios 滚动视图中的UIButton在超出初始帧时无响应_Ios_Xcode_Uiscrollview_Uibutton_Xib - Fatal编程技术网

Ios 滚动视图中的UIButton在超出初始帧时无响应

Ios 滚动视图中的UIButton在超出初始帧时无响应,ios,xcode,uiscrollview,uibutton,xib,Ios,Xcode,Uiscrollview,Uibutton,Xib,我在xib中创建了一个非常长的视图(>2000像素)。这个xib被加载,然后,在它的ViewController中,我将根视图切换为滚动视图(我希望滚动2000像素) 长视图有一个按钮,但如果它位于长视图顶部之外(即初始屏幕框架之外),则不会触发 看起来类似,但略有不同,所以用户动态扩展滚动视图的大小。在本例中,滚动视图的大小是固定的(全屏),但我无法在我的xib中点击超出初始帧的内容。在调试过程中,我可以看到滚动视图和内容视图的框架都已设置(和长) 我怎样才能确保点击能够到达滚动到视图中的

我在xib中创建了一个非常长的视图(>2000像素)。这个xib被加载,然后,在它的ViewController中,我将根视图切换为滚动视图(我希望滚动2000像素)

长视图有一个按钮,但如果它位于长视图顶部之外(即初始屏幕框架之外),则不会触发

看起来类似,但略有不同,所以用户动态扩展滚动视图的大小。在本例中,滚动视图的大小是固定的(全屏),但我无法在我的xib中点击超出初始帧的内容。在调试过程中,我可以看到滚动视图和内容视图的框架都已设置(和长)


我怎样才能确保点击能够到达滚动到视图中的控件

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
这将创建一个与视图控制器的实际视图相匹配的滚动视图

 UIView *newView=[[UIView alloc] initWithFrame:CGRectMake(0,0,320,2320)];

[scrollView addSubview:newView];
//你也可以从故事板中的长视图创建此视图,不要使用self.view内部滚动此使你的层次结构关键添加到控制器中的更长视图,然后将该视图引用到视图控制器中的新实例,然后在此处使用

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, newview.frame.size.height);
然后设置

旧答案


将你的滚动视图的contentsize属性设置为macth滚动视图的高度和滚动视图内视图的宽度…

通过反复试验,我解决了这个问题,但我不确定为什么它会起作用。在上面的代码中,我初始化UIScrollView使其具有与内容视图相同的大小框架(这实际上没有意义,根本不知道为什么它会滚动)

取而代之的是,我让它根据屏幕大小进行调整(因为它将是全屏的):


现在一切都很顺利。古怪的希望了解原因。

有关更多详细信息,请查看我的更新解决方案
 UIView *newView=[[UIView alloc] initWithFrame:CGRectMake(0,0,320,2320)];

[scrollView addSubview:newView];
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, newview.frame.size.height);
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];