UIScrollView中的UIButton不会点亮

Dev*_*per 23 iphone

UIScrollView中的UIButton不会点亮.请帮忙解决它.

 // Add a button
 UIButton *btn1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
 btn1.frame = CGRectMake(0, 0, 26, 18); 
 btn1.bounds = CGRectMake(0, 0, 30.0, 30.0); 
 [btn1 addTarget:self action:@selector(buttonClick1:) 
                      forControlEvents:UIControlEventTouchUpInside];
 [scrollView addSubview:btn1];


- (void)buttonClick1:(id)sender {
     int dd = 4; 
 }
Run Code Online (Sandbox Code Playgroud)

leu*_*ima 14

我找到了这个东西:

但滚动视图将阻止按钮的触摸,除非您在scrollview上将userInteractionEnabled和exclusiveTouch属性设置为NO.但这会打败我认为在按钮内部滚动视图的目的.

(请参阅我们可以在UIScrollView中放置UIButton,反之亦然)

但怎么办呢?

假设您有一个UIScrollView*sv ...然后

sv.userInteractionEnabled = YES;
sv.exclusiveTouch = YES;
Run Code Online (Sandbox Code Playgroud)

我还想补充一下

sv.canCancelContentTouches = YES;
sv.delaysContentTouches = YES;
Run Code Online (Sandbox Code Playgroud)


小智 13

您必须设置视图的内容大小.它必须大于或等于scrollView的内容大小.

因为您的视图的默认大小是320 x 480(3.5"视网膜)和320 x 568(4"视网膜).因此,增加视图的高度为:

self.view.frame=CGRectMake(0, 0, 320, 700);
Run Code Online (Sandbox Code Playgroud)

然后将其添加为scrollView的子视图将使您获得解决方案.


Ada*_*hns 6

老答案:我在iOS 7中所做的一切都已确定

[_scrollView setDelaysContentTouches:NO];
Run Code Online (Sandbox Code Playgroud)

更新:在做了一点研究之后,似乎如果你的问题是UIButton点击似乎只是有时被调用,那么这实际上可能是一个内部的期望行为UIScrollView.A UIScrollView使用delaysContentTouches属性自动确定用户是否正在尝试滚动或尝试按滚动视图内的按钮.我认为最好不要将此行为更改为默认值,NO因为这样做会导致无法滚动,如果用户的手指在按钮上方.


jak*_*nge 6

我的结构是:

-View
--ScrollView
---ContainerView
Run Code Online (Sandbox Code Playgroud)

我正在使用 snapkit。我的问题是我的 ContainerView 实际上的高度为 0。我能够通过ClipsToBounds = true在 ContainerView 上设置来注意到这一点(这样做后没有任何渲染,因为边界的高度为 0)。

任何超出父视图边界的视图都不会收到内部事件的修饰。

我的解决方法是将 ContainerView 的左右锚点和底部锚点设置为等于 View,顶部等于 ScrollView(我的 ScrollView 的顶部从我的根视图偏移)。


小智 5

我遇到了同样的问题,我所做的不是将按钮添加到容器视图中,而是将其添加到容器视图顶部的滚动视图中:

scrollView.insertSubview(buttonA, aboveSubview: containerView)
Run Code Online (Sandbox Code Playgroud)

我的结构是:

-View
--ScrollView
---ContainerView
Run Code Online (Sandbox Code Playgroud)

我希望这对任何人都有帮助。