2014-11-21 121 views
4

我在UIScrollView中有一個不可滾動的UITableView。而且我遇到的問題是,當我觸摸某一行時,在第一次敲擊時沒有調用回調didSelectRowAtIndexPath:,但是在第一次敲擊一生之後工作。UITableView(在UIScrollView內)didSelectRowAtIndexPath:不在第一個水龍頭上調用

幾個方面的考慮:

  • 第一次輕觸後,表視圖正常工作,每一個水龍頭在每一個細胞的工作原理。
  • 這發生在我滾動UIScrollView之後。如果我不滾動UIScrollView,這絕不會發生。
  • 我已經覆蓋了UIScrollView的touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view並且事件確實通過拋出,viewUITableViewCellContentView有效。

我只是不知道爲什麼事件沒有被髮送到UITableView在第一次,並在它下面的那些。

+2

雙重檢查,以確保您不使用 - 的tableView:didDeselectRowAtIndexPath:不是didSelectRowAtIndexPath方法 – Vig 2014-11-21 19:46:45

+0

@Vig是啊,第一個後點擊我的執行didSelectRowAtIndexPath方法是被調用。 – 6rod9 2014-11-21 19:49:52

+0

爲什麼您首先在滾動視圖中嵌入不可滾動的表格視圖? – sha 2014-11-22 00:31:19

回答

1

如果你有UIScrollView包含垂直內容和UITableView作爲該內容的一部分,你必須至少禁用滾動上UITableView - 否則它是用戶困惑的時候,他會滾動你的mainViewtableView,也混淆了框架,因爲不清楚在哪裏發送平移手勢。作爲一個經驗法則 - 你應該避免在scrollViews之內放置表格視圖,除非你真的知道你在做什麼。

+1

表格視圖上的滾動被禁用。 :/ – 6rod9 2014-11-25 17:58:54

+0

究竟是如何「有效」被禁用? – sha 2014-11-25 18:04:24

+0

我禁用了故事板UITableView複選框「滾動已啓用」中的滾動。 我的猜測是,滾動視圖仍然認爲第一個水龍頭是以前的滾動事件的一部分,但仍然不知道爲什麼。 – 6rod9 2014-11-25 18:10:29

0

請禁用您的表格視圖的滾動,並檢查數據源和代表連接到您的表格視圖。如果不按下面的代碼

@interface myClass()<UITableViewDataSource, UITableViewDelegate> 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.myTableView.scrollEnabled = NO; 
    self.myTableView.delegate = self; 
    self.myTableView.dataSource = self; 
}