现需要在一屏内展示许多按钮,目前我的做法就是在一个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;
}