2013-04-28 54 views
0

现在我正在实现一个UIScrollView,我面临着一个我从来没有看到的问题:在我的滚动视图上的3个UIButton中有2个没有响应我的点击。 其中一个没有,但另一个没有。UIScrollView&UIButtons,真是奇怪的行为

我做了很多的研究,并尝试了很多东西(试图削减的延迟,设置用户交互......)

在viewDidLoad方法:

BoutonPig1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
[BoutonPig1 setFrame:CGRectMake(0, 45, 145, 90)]; 
[BoutonPig1 addTarget:self action:@selector(BonusShop) forControlEvents:UIControlEventTouchUpInside]; 
UIImage * boutonPig1OnImage = [UIImage imageNamed:@"Pig2ShopBloquee.png"]; 
[BoutonPig1 setImage:boutonPig1OnImage forState:UIControlStateNormal]; 

我一套scrol视图方法用3个元素:

-(void)setScrollView:(UIScrollView *)scroller1 
{ 
for (int i = 0; i < 3; i++) 
{ 
    CGRect frame; 
    frame.origin.x = 0; 
    frame.origin.y = scroller.frame.size.height * i; 
    frame.size = scroller.frame.size; 

    UIImageView *newPageView = [[UIImageView alloc] init]; 
    newPageView.contentMode = UIViewContentModeScaleAspectFit; 
    newPageView.frame = frame; 

    if (i == 0) 
    { 
     [newPageView addSubview:BoutonPig1]; 
    } 
    if (i == 1) 
    { 
     [newPageView addSubview:BoutonPig2]; 
    } 
    if (i == 2) 
    { 
     [newPageView addSubview:BoutonPig3]; 
    } 
    [newPageView setUserInteractionEnabled:YES]; 
    [scroller addSubview:newPageView]; 
} 
scroller.contentSize = CGSizeMake(scroller.frame.size.width * 3, scroller.frame.size.height); 
} 

,我放在子视图的三个元素是3个UIButtons像在第一代码提取物。做同样的事情。现在唯一不同的是他们的立场。

[BoutonPig2 setFrame:CGRectMake(0, 164, 145, 90)]; 
    [BoutonPig3 setFrame:CGRectMake(0, 285, 145, 90)]; 

感谢您的帮助!

+0

什么是你的UIScrollView的框架?我想象一下你的scrollview的内容大小不够大tbh。 – Dev2rights 2013-04-28 19:31:04

+0

scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(59.0,54.0,145,180)]; – user2057209 2013-04-28 19:39:15

+0

那么就有答案了,180 + 54 = 234对于初学者来说按钮3上的值大于285。调出滚动视图的框架。也不知道为什么你需要该图像视图,因为你不设置图像。 – Dev2rights 2013-04-28 19:43:59

回答

0

我认为问题出在坐标,因为你添加按钮BoutonPig2 BoutonPig3 newPageView坐标CGRectMake(0,164,145,90)CGRectMake(0,285,145,90),但你需要设置CGRectMake (0,45,145,90)或CGRectMake(0,0,145,90)...因为您不添加按钮到scool上,而是在newPageView上,并且您有新的坐标0,0