2014-02-26 73 views
1

我在我的應用程序中有一個UIButtons的旋轉木馬菜單。除了按鈕有點大以外,一切都很好,當手指拖過按鈕時它不會滾動。拖動必須在旋轉木馬當前和中心的按鈕之外完成。是否有一些設置可以更改,以便我可以在按鈕上滑動以進行滾動並讓它們也可以互動?如何允許通過UIButtons滑動滾動?

下面是一個創建按鈕的代碼:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(0, 0, 500.0f, 320.0f); 
button.layer.cornerRadius = 8.0f; 
button.layer.masksToBounds = NO; 
button.layer.borderWidth = 0.0f; 

button.layer.shadowColor = [UIColor blackColor].CGColor; 
button.layer.shadowOpacity = 0.8; 
button.layer.shadowRadius = 12; 
button.layer.shadowOffset = CGSizeMake(12.0f, 12.0f); 

[button setImage:(UIImage*)[buttons objectAtIndex:index] forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
+0

當手指拖動按鈕時,按鈕是第一響應者,所以按鈕動作被觸發。如果你想跳過按鈕動作,你可能會更好地實現你自己的touchMoved,touchBegan,touchEnd代碼 – Jing

回答

2

確保UIScrollView屬性canCancelContentTouches設置爲YES

scrollView.canCancelContentTouches = YES; 

此外,UIScrollView實現方法touchesShouldCancelInContentView

如果view不是UIControl對象,則默認返回值爲YES; 否則,它返回NO。

這意味着UIScrollView不會嘗試取消防止滾動的觸摸UIButtons。另外,當內容視圖對象爲UIButton時,您可以子類UIScrollView並覆蓋touchesShouldCancelInContentView以返回YES

+0

我實際上並沒有使用UIScrollView。對困惑感到抱歉。我使用在這裏找到的iCarousel類:https://github.com/nicklockwood/iCarousel來創建輪播效果。 – lunadiviner