我有一個UIView覆蓋了所有的UITableView。 UIView使用手勢識別器來控制表格顯示的內容。 我仍然需要垂直UITableView滾動和行水龍頭。 如何從手勢識別器將這些傳遞到桌子上?手勢識別器和TableView
回答
將您的姿態向表視圖,該表將照顧它:
UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSwipeFrom:)];
[gesture setDirection:
(UISwipeGestureRecognizerDirectionLeft
|UISwipeGestureRecognizerDirectionRight)];
[tableView addGestureRecognizer:gesture];
[gesture release];
然後在你的手勢操作方法,行爲基礎上的方向:
- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
[self moveLeftColumnButtonPressed:nil];
}
else if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {
[self moveRightColumnButtonPressed:nil];
}
}
該表將只有通過你在內部處理之後所要求的手勢。
這是很好的答案。但是,你能告訴我如何知道handleSwipeFrom方法中的tableview indexPath嗎? – dinesh 2012-01-20 10:14:48
這不起作用 - UISwipeGestureRecognizer上的direction屬性指示可以識別哪些方向(在本例中是左和右)而不是WAS滑動的方向。您需要分離手勢識別器 – 2013-09-02 10:22:12
是的,recognitionizer.direction將始終爲3並且永不匹配。這可以說是一個錯誤:http://stackoverflow.com/questions/3319209/setting-direction-for-uiswipegesturerecognizer – Symmetric 2013-09-29 03:33:16
如果你需要知道你的電池的indexPath:
- (void)handleSwipeFrom:(UIGestureRecognizer *)recognizer {
CGPoint swipeLocation = [recognizer locationInView:self.tableView];
NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:swipeLocation];
UITableViewCell *swipedCell = [self.tableView cellForRowAtIndexPath:swipedIndexPath];
}
我試過Rob Bonner的建議,它的效果很好。謝謝。
但是,在我的情況下,方向識別存在問題。 (recognitionizer.direction總是指3)我使用IOS5 SDK和Xcode 4.
這似乎是由「[gesture setDirection:(left | right)]」引起的。 (因爲預定義的(dir left | dir right)計算結果是3)
因此,如果某人有像我這樣的問題,並且想要識別左右劃分,則將兩個識別器分配給不同方向的表視圖。
像這樣:
UISwipeGestureRecognizer *swipeLeftGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleSwipeLeft:)];
[swipeLeftGesture setDirection: UISwipeGestureRecognizerDirectionLeft];
UISwipeGestureRecognizer *swipeRightGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleSwipeRight:)];
[swipeRightGesture setDirection: UISwipeGestureRecognizerDirectionRight];
[tableView addGestureRecognizer:swipeLeftGesture];
[tableView addGestureRecognizer:swipeRightGesture];
和手勢動作如下:
- (void)handleSwipeLeft:(UISwipeGestureRecognizer *)recognizer {
[self moveLeftColumnButtonPressed:nil];
}
- (void)handleSwipeRight:(UISwipeGestureRecognizer *)recognizer {
[self moveRightColumnButtonPressed:nil];
}
,如果你不使用ARC我與ARC功能再編碼,增加發行代碼。
PS:我的英語不太好,所以如果有任何句子錯誤,修正會很高興:)
- 1. UIPageController和手勢識別器
- 2. 手勢識別器和塊
- 3. 拖動手勢識別器干擾滑動手勢識別器
- 4. Swift/UIView與TableView和手勢識別器問題
- 5. 手勢識別器問題
- 6. cocos2d-iOS - 手勢識別器
- 7. 點擊手勢識別器
- 8. 添加手勢識別器
- 9. Swipe手勢識別器swift
- 10. 捏捏手勢識別器
- 11. SpriteKit手勢識別器
- 12. UICollectionView與手勢識別器
- 13. 手勢識別器和AndEngine(Android)
- 14. iOS - CALayer和手勢/滑動識別器
- 15. 關於視圖和手勢識別器
- 16. Android識別手勢
- 17. Kinect手勢識別
- 18. 3D手勢識別
- 19. Android手勢識別
- 20. 如何從一個手勢識別器到另一個手勢識別器
- 21. TableView手勢識別器影響滑動刪除行
- 22. 我可以發現tableviewcell中tableview手勢識別器的狀態
- 23. 將手勢識別器添加到tableView標頭不起作用?
- 24. UItextview與手指手勢識別器
- 25. 手指跟蹤和手勢識別
- 26. 手勢檢測器無法識別手勢
- 27. 禁用UIPageViewController手勢識別器,同時處理longPressed手勢
- 28. Windows手勢識別器內置的手勢指標是什麼?
- 29. 叩擊手勢手勢識別器無法正常工作
- 30. 處理iOS6中的手勢識別器
我相信「[tablView手勢]」應爲「[yourTableView addGestureRecognizer:手勢]」 – 2011-06-23 19:17:15