我已經分類UIScrollView和執行 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
方法在其中。沒有得到從UIScrollView觸摸
但點擊或按住滾動視圖時沒有任何反應!
編輯:我還需要使用touchesEnded方法
我已經分類UIScrollView和執行 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
方法在其中。沒有得到從UIScrollView觸摸
但點擊或按住滾動視圖時沒有任何反應!
編輯:我還需要使用touchesEnded方法
我想UIScrollView中有兩個手勢識別。他們負責處理觸摸序列,因此他們吞下觸摸事件。
使用滾動視圖的委託方法來處理拖拽手勢或
touchesShouldBegin:withEvent:方法inContentView:
方法來處理滾動視圖內容風格和
touchesShouldCancelInContentView:
取消它。
作爲替代方案,您可以操作scrollView的panGesture識別器以將事件傳遞給下一個響應者。
這就是我在找的東西! UIScrollView有什麼方法在觸摸結束時被調用? – 2013-05-03 07:11:10
是的,但正如我告訴事件調用被手勢攔截。使用touchesShouldBegin:withEvent:inContentView:爲您的特殊視圖返回YES,以便它們將獲取已觸及的開始/結束事件 – Peteee24 2013-05-04 14:08:47
在你的UIScrollView的子類中覆蓋的方法則hitTest像這樣:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *result = nil;
for (UIView *child in self.subviews)
if ([child pointInside:point withEvent:event])
if ((result = [child hitTest:point withEvent:event]) != nil)
break;
return result;
}
雅我曾經使用過。無論如何,你能解釋一下代碼嗎? – 2013-05-03 06:47:35
[hitTest:withEvent:](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html)「返回視圖層次結構中接收者的最遠後代(包括它本身)包含一個特定點。「 – 2013-05-03 07:10:11
我認爲你正在使用滾動視圖在這種情況下,一個subview.So你可以使用手勢,因爲我面對同樣的問題。
可以使用UITapGestureRecognizer
這樣做......
-(void)viewDidLoad
{
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
gr.delegate = self;
[self.scrollView addGestureRecognizer:gr];
}
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
// do here whatever you wanna ..........
}
我沒有使用viewcontroller – 2013-05-03 06:55:28
解決!
使用LongPressedGestureRecognizer
。操作方法不斷被調用,直到用戶持有視圖。從這我可以計算出gestureRecognizer的狀態(UIGestureRecognizerStateBegan
,...Ended
,...Cancelled
)
您能否提供更重要的信息?你是通過Storyboard創建你的UIScrollView嗎?確保觸摸事件已啓用。 – David 2013-05-03 06:41:55
不,我不使用故事板或.xib文件。 – 2013-05-03 06:42:55
http://stackoverflow.com/questions/5216413/uiscrollview-getting-touch-events – Balu 2013-05-03 06:43:26