我用canCancelContentTouches來使用UIScrollView的取消觸摸功能。(iphone)我可以讓UIScrollView只識別水平拖動嗎?
但是,我想要uiscrollview嘗試取消觸摸,當它檢測到水平拖動(不垂直)。
(希望解決方案將可<下的iOS 3.13)
謝謝
我用canCancelContentTouches來使用UIScrollView的取消觸摸功能。(iphone)我可以讓UIScrollView只識別水平拖動嗎?
但是,我想要uiscrollview嘗試取消觸摸,當它檢測到水平拖動(不垂直)。
(希望解決方案將可<下的iOS 3.13)
謝謝
落實UIScrollViewDelegate
,然後用這樣的:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[scrollView setContentOffset: CGPointMake(0, scrollView.contentOffset.y)];
}
另一種方法是有一個UIScrollView這小於或等於其父視圖的大小並禁用「總是反彈水平」。
我想我會使用的方法scrollViewWillBeginDragging 在UIScrollViewDelegate 發現裏面如果用戶水平或不會我可以控制...
scrollViewWillBeginDragging:
告訴代表當滾動視圖即將開始滾動內容。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
參數
滾動視圖
的渦旋視圖對象,它是關於滾動內容視圖。
討論
直到發生了一個小的距離拖動代表可能不會收到此消息。
供貨情況 適用於iOS 2.0及更高版本。
我發現以限制滾動視圖的運動的最安全和最成功的方法是子類的UIScrollView並重寫setContentOffset:動畫:和setContentOffset:方法(下面的代碼)。
重寫這些方法的優點是,它直接改變所請求的contentOffset任何的UIKit代碼的開始之前作用於它,從而避免任何的副作用scrollViewDidScroll修改contentOffset時可能發生:或其他UIScrollViewDelegate方法。
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated {
// restrict movement to horizontal only
CGPoint newOffset = CGPointMake(contentOffset.x, 0);
[super setContentOffset:newOffset animated:animated];
}
- (void)setContentOffset:(CGPoint)contentOffset {
// restrict movement to horizontal only
CGPoint newOffset = CGPointMake(contentOffset.x, 0);
[super setContentOffset:newOffset];
}