我有許多按鈕的滾動視圖。我想檢測scrollView內的UIButton的觸摸,但無法獲取它們。我試圖通過繼承uiscrollview和uibutton 但失敗。如果用戶長時間按住按鈕,比如2秒,我想檢測按鈕上的觸摸。然後,我想將按鈕拖放到用戶可以將其拖動到滾動視圖上的位置。 Plz幫助我。在UIScrollView中添加爲子視圖的UIButton的觸摸檢測
0
A
回答
4
你不需要子類。
嘗試附加到您的UIButton
a UILongPressGestureRecognizer
。
查看更多信息here。
手勢識別器可以從iOS 3.2中獲得,並且可以非常方便地與手勢相關的所有事情。 Here你可以找到一個教程。
如果你想支持以前的版本中,你不得不求助於不同的方法:
添加
UIControlEventTouchUpInside
和UIControlEventTouchDown
行動,以您的按鈕;在touchDown處理程序中開始計時的時間(用當前時間設置一個變量);
in touchUp handler停止計數時間;衡量差異,如果超過了你的門檻,就開始行動。
如果這不起作用,請提供一些關於它爲什麼不行的信息。
1
您可以設置每個按鈕tag
上scrollView
,然後像@sergio說添加UILongPressGestureRecognizer
(或uicontrolevent)每個按鈕,所以當你在設置滾動視圖的頁面,你可以添加:
[button addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];
或
UILongPressGestureRecognizer *twoSecPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(someAction:)];
[twoSecPress setMinimumPressDuration:2];
[button addGestureRecognizer:twoSecPress];
[twoSecPress release];
,並在你的行動..
-(IBAction)someAction:(id)sender{
UIButton *button=(UIButton*)sender;
if(button.tag==YOUR_TAG){
//do something
}
}
或
-(void)someAction:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
if ([recognizer.view isKindOfClass:[UIButton class]]) {
UIButton *tmpButt=(UIButton *)recognizer.view;
NSLog(@"%d", tmpButt.tag);
}
}
(顯然您的.h添加UIGestureRecognizerDelegate)
+1
我也想通過拖動長按按鈕將scrollView中的按鈕移動到任何其他位置。我怎樣才能做到這一點。 –
相關問題
- 1. 檢測觸摸的UIImage作爲UIScrollView子視圖添加
- 2. 在子視圖中觸摸檢測
- 3. 檢測觸摸UIButton
- 4. 在主視圖中添加UIPinchGestureRecognizer並檢測子視圖上的觸摸
- 5. 檢測UIScrollView下的觸摸
- 6. UIButton在添加到子視圖時未收到觸摸,但在添加到主視圖時未收到觸摸
- 7. iPhone - 檢測觸摸UITableViewCell的子視圖
- 8. 檢測子視圖上的觸摸
- 9. 檢測UIButton觸及子視圖
- 10. 如何檢測子視圖中的事件觸摸或如何在觸摸子視圖時觸及父視圖?
- 11. 檢測用戶觸摸UIScrollView
- 12. 在圖像視圖中檢測觸摸
- 13. 將UIView添加到UIButton子視圖可防止觸摸事件
- 14. 觸摸UIView子類的事件作爲UIScrollView的子視圖
- 15. 註解視圖中的子視圖不檢測觸摸事件
- 16. UIScrollView觸摸處理子視圖
- 17. 在UIScrollView中無法觸摸UIButton
- 18. UIButton作爲複雜的UIScrollView子視圖
- 19. iPhone - 的UIScrollView ...檢測觸摸的座標
- 20. 添加子視圖的UIButton
- 21. 帶有imageview檢測觸摸的UIScrollView
- 22. 在主控制器中檢測子視圖上的觸摸
- 23. 檢測部分觸摸上的UIButton
- 24. 添加子視圖 - 單點觸摸
- 25. 添加UIViewController作爲UIScrollView的子視圖
- 26. 在UIScrollView上檢測觸摸位置?
- 27. 在UiScrollView上檢測觸摸位置
- 28. UITapGestureRecognizer在子視圖中阻止UIButton的觸摸事件
- 29. UIButton添加到inputAccessoryView沒有檢測到觸摸
- 30. 在UIScrollview中爲UIButton添加UIPangesture以移動到所有視圖
感謝您的答覆,但後來長按之後,我需要爲用戶拖動來移動按鈕上的任何空間,滾動視圖。有什麼可以做到這一點。 –
在上面鏈接的教程中(http://www.icodeblog.com/2010/10/14/working-with-uigesturerecognizers/),請轉到「實施移動」部分,您將找到工作代碼。 – sergio
感謝您的幫助。 –