2013-04-24 30 views
0

我有一個嵌入在WEPopover中的UITableView。我可以看到整個視圖並選擇單元格,但底部的單元格除外。按下底部行不會導致didSelectRowAtIndexPath被調用。我試圖在視圖中添加一個UITapGestureRecognizer來攔截觸摸並用下面的代碼計算相應的單元格,並發現它可以工作。我想了解爲什麼didSelectRowAtIndexPath不被調用,即使表視圖正在接收觸摸事件。UITableView:可以通過點擊手勢檢測單元格選擇,但不是didSelectRowAtIndexPath

CGPoint touchLocation = [sender locationInView:self.tableView]; 
NSIndexPath *tappedIndexPath = [self.tableView indexPathForRowAtPoint:touchLocation]; 
NSInteger row = [tappedIndexPath row]; 

任何想法,將不勝感激。

+0

我懷疑WEPopver會添加一個透明的視圖來捕捉所有的觸摸和解僱外面的觸摸。你在表格視圖上添加了手勢識別器(不是它的父類)?另外,當您點擊表格視圖的可見部分時,WEPopover是否被解僱? – Mar0ux 2013-04-26 15:10:39

回答

-1

擺脫UITapGestureRecognizer,你不需要它。我的猜測是要麼

1)您的WEPopover比你的UITableView小。將WEPopover上的clipsToBounds屬性設置爲YES,看看是否仍然存在此問題。您還可以仔細檢查UITableView框架和WEPopover框架的高度,並確保它們相同。

2)你有一些透明的視圖覆蓋底部單元格。檢查你的視圖層次結構並將透明視圖的顏色設置爲[UIColor redColor],並確保你的UITableView上沒有東西。

你可以觸摸底部的單元格並滾動嗎?

+0

手勢識別器是一個測試,用於確定表視圖的可視部分是否響應了觸摸。在這種情況下,你的兩個條件都不成立。不,觸摸滾動不適用於底部。這就像tableview正在接觸那個部分(手勢識別器),但沒有將它們翻譯成UITableView事件。 – er0 2013-04-24 21:40:25

相關問題