我有一個UIScrollView,它是水平視圖可滾動的。在這個視圖中,我添加了一些視圖作爲子視圖。如何檢測屏幕中間的哪個視圖,並由用戶選擇?檢測UIScrollView中的選定視圖
我想到類似didSelectRowAtIndexPath:
的東西只是爲了滾動視圖。
感謝
我有一個UIScrollView,它是水平視圖可滾動的。在這個視圖中,我添加了一些視圖作爲子視圖。如何檢測屏幕中間的哪個視圖,並由用戶選擇?檢測UIScrollView中的選定視圖
我想到類似didSelectRowAtIndexPath:
的東西只是爲了滾動視圖。
感謝
可以查詢UIScrollView
contentOffSet
屬性,然後檢查在scrollView
該CGPoint
的看法。你可以參考這個link,它顯示瞭如何從CGPoint
獲得UIView。
你能趕上這樣的觸摸(從UIScrollView
子類):
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches) {
CGPoint locationInScroll = [touch locationInView:scrollView];
for (UIView *view in scrollView.subviews) {
if (CGRectContainsPoint(view.frame, locationInScroll)) {
// that's it
break;
}
}
}
}
或者你可以嘗試用類似的方式來使用UITapGestureRecognizer
。
在'scrollViewDidEndDecelerating:scrollView:'方法中有沒有辦法做到這一點? –
您可以通過'scrollView.contentOffset'來獲取左上角可見點和「scrollView.contentSize」的座標以獲得可見的大小。但你如何期望用戶「選擇」一個視圖而不點擊? – kpower
在touchesEnded或手勢識別器函數中,獲取滾動視圖中進行點擊的確切點。
CGPoint touchPoint=[gesture locationInView:scrollView];
然後除以與每個視圖的高度接觸點的y值與滾動視圖內得到確切的UIView
int point = (touchPoint.y)/heightOfSingleView;
然後得到滾動視圖內該特定視圖如下:
UIView* view=[[locationInView:scrollView subviews] objectAtIndex:point];
確切的代碼應該是這樣的:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint touchPoint=[gesture locationInView:scrollView];
int point = (touchPoint.y)/heightOfSingleView;
UIView* view=[[locationInView:scrollView subviews] objectAtIndex:point];
}
不,沒有。但是有一個委託方法'scrollViewDidScroll',和不同的'contentOffset'&'contentSize'屬性,你可以知道顯示的是什麼。 – Larme
好吧,我明白了。你能告訴我如何檢測哪個視圖被選中? –