首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

UIScrollView上面创建了许多按钮之后滚动不流畅的有关问题

2013-08-06 
UIScrollView上面创建了许多按钮之后滚动不流畅的问题现需要在一屏内展示许多按钮,目前我的做法就是在一个

UIScrollView上面创建了许多按钮之后滚动不流畅的问题
        现需要在一屏内展示许多按钮,目前我的做法就是在一个UIView里面创建一个UIScrollView,再在这个UIScrollView上面创建这些按钮。
        按钮是展示出来了,但是滚动UIScrollView的时候不是那么流畅:手指滑动的时候,经常就是点到按钮,从而导致UIScrollView滚动不流畅。
        大虾们支支招,看看有什么更好的办法,能在滚动UIScrollView的时候,不会触发按钮的按下操作。当按下按钮的时候,按钮该有的响应还存在。
ViewController的viewDidLoad里面控件创建代码如下:

UIScrollView *view=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    [view setUserInteractionEnabled:YES];
    [view setScrollEnabled:YES];
    //[view setContentSize:CGSizeMake(800,800)];
    
    //NO 发送滚动的通知 但是就算手指移动 scroll也不会动了 YES 发送通知 scroo可以移动
    [view setCanCancelContentTouches:YES];
    [view setBounces:NO];
    // NO 立即通知touchesShouldBegin:withEvent:inContentView 看是否滚动 scroll
    [view setDelaysContentTouches:NO];
    [view setContentSize:CGSizeMake(300, 900)];
    [self.view addSubview:view];
    
    
    CGFloat yPlacement = 50;
    for ( int i=0; i<30; ++i)
    {
        CGRect frame = CGRectMake(20, yPlacement,  self.view.bounds.size.width - (20 * 2.0), 40);
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = frame;
        // 設定一般情況下 Button的文字 ( UIControlStateNormal | UIControlStateHighlighted ...)
        [btn setTitle:@"UIButtonTypeRoundedRect" forState:UIControlStateNormal];
        // 設定 Button 的 Click Event , UIControlEventTouchDown類似Click
        //[btn addTarget:self action:@selector(numBtnClick:) forControlEvents:UIControlEventTouchDown];
        [view addSubview:btn];
               
        yPlacement = yPlacement + 40 + 10;
    }
    


    [view release];

UIScroolView?控件?滚动
[解决办法]
为什么不用TABLEVIEW 呢
[解决办法]
如果在UIScrollView的相关协议方法中设置按钮的userinteractionenable,滚动开始的时候设为No,滚动结束的时候设为Yes,不知这样是否可行
[解决办法]
-(void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSLog(@"decelering...");
}

-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"deceler end...");
}


在上面的这两个代理方法里,对按钮进行enable的操作

热点排行