我有橫向UIScrollView
這是從UIScrollView
延伸和我加UIButtons
水平。我只能滾動出按鈕區域,但如果我想滾動任何按鈕是火災UIControlEventTouchUpInside
事件。我不想要這個。如果我點擊並且想滾動,如果我滾動,我想點擊UIControlEventTouchUpInside
動作。從uibutton傳遞滾動事件到uiscrollview
憑什麼我通過滾動事件從UIButton
到UIScrollView
?
我有橫向UIScrollView
這是從UIScrollView
延伸和我加UIButtons
水平。我只能滾動出按鈕區域,但如果我想滾動任何按鈕是火災UIControlEventTouchUpInside
事件。我不想要這個。如果我點擊並且想滾動,如果我滾動,我想點擊UIControlEventTouchUpInside
動作。從uibutton傳遞滾動事件到uiscrollview
憑什麼我通過滾動事件從UIButton
到UIScrollView
?
如果你繼承NSButton,使您的這種類型的按鈕,並覆蓋在你的子類下面你可以傳遞事件回父視圖,你的情況滾動視圖
下會使按鈕永遠觸發事件,而是全部將被父視圖處理:
- (void)touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event {
[self.nextResponder touchesBegan:touches withEvent:event];
}
- (void)touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
[self.nextResponder touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event
{
[self.nextResponder touchesEnded:touches withEvent:event];
}
如果你想有按鈕處理這些事件之一,而不是使用
[super touchesEnded:touches withEvent:event];
我試過了,但沒有奏效。原因是UIScrollView不響應touchesBegan,touchesMoved和touchesEnded事件。我將UIScrollView分類以確認它正在接收這些事件,但沒有對它們做任何事情。作爲替代通過觸摸事件,你可以算出touchesMoved的位置變化而改變滾動視圖contentOffset財產,但不給你任何正常的滾動行爲的平滑運動或慣性。 – arlomedia 2011-07-27 21:21:07
該功能已經內置的。當你有一個UIControl元素作爲滾動視圖的子視圖和觸摸事件被檢測到時,它最初傳遞給UIScrollView的。如果在一兩秒之後觸摸事件中沒有足夠的移動,它會傳遞給按鈕。
我想我的按鈕漂浮在一個固定的位置,滾動內容上面,而不是與內容移動,好像他們是滾動視圖的子視圖他們會做。但是我無法使用任何其他方法正確流動觸摸事件,所以我嘗試了這種方法,並將所有按鈕分組到一個視圖中,該視圖是滾動視圖的子視圖。當scrollViewDidScroll委託方法檢測到滾動內容時,通過設置其frame.origin.x以匹配滾動視圖的contentOffset.x,我將該視圖保留在可見內容的上方。這樣可行! – arlomedia 2011-07-28 00:25:35
試試這個:
self.button.exclusiveTouch = YES
工作就像一個魅力對我來說!
子類的UIScrollView,在- touchesShouldCancelInContentView:
方法返回YES。
非常感謝! :] – Jerome 2016-10-12 23:49:11
,如果你創建了一個簡單的代碼示例來說明你在做什麼,因爲在添加一個UIButton到的UIScrollView的簡單的情況下,你甚至可以拖動滾動視圖現在的位置,如果你在開始觸摸事件這將有助於按鈕。 – Yetanotherjosh 2011-04-12 08:57:30