2009-11-23 36 views
3

我想在用戶單擊或雙擊UITableViewCell的imageView時收到通知。我一直試圖添加一個子視圖到imageView,並使用touchesBegan:withEvent:在子視圖控制器中,但不能觸發我期望的事件。我該怎麼做?如何獲取UITableViewCell的imageView觸摸事件?

+0

imageview通過任何函數都無法觸摸事件。 但是,您可以嘗試放置UIButton而不是imageview並設置該按鈕的背景圖像,以便您可以同時獲得圖像和按鈕觸摸事件。這可能符合你的目的。 – 2009-11-23 08:37:50

+0

看看這個答案:http://stackoverflow.com/questions/1606492/touch-event-is-not-working-in-uimageview/1606616#1606616 – 2009-11-23 08:45:23

回答

1

在我的項目中,我添加了用戶交互的子類UIImageView,如果它可以是有用的,你可以簡單地看看蘋果示例代碼項目「TapToZoom」。 簡而言之,您必須啓用用戶交互,並且只有在此之後,UIImageView纔會開始迴應觸摸。 這是通過設置userInteractionEnabled屬性來完成:

[self setUserInteractionEnabled:YES]; 

那麼你可以通過自定義其他觸摸的特性,例如:

[self setMultipleTouchEnabled:YES]; 
twoFingerTapIsPossible = YES; 

否則,你可能會實現一種縮略圖查看喜歡的照片應用程序,讓我們說。根據您的目標,您還可以考慮使用UIButton,您可以在其中設置背景圖像。我有一個項目,我模仿原始照片應用程序的照片縮略圖視圖,只需在每個tableView行中以編程方式放置四個UIButton,並且工作正常。 乾杯

+0

子類化UIImageView如何幫助?你不能設置UITableViewCell使用的imageview – user102008 2012-03-21 01:40:32

1

感謝上面的答案,工作已經完成。

 
My solution: 
    subclass a UIView, override touchesBegan:withEvent: in it's implementation file 
    add the UIView(as subview) to cell.view and cover the position of imageView, then make the subview nearest transparent(alpha=0.015f) 
    done. 
    it works fine 

注意:如果字母數量太少(0.01F),也不會觸發觸摸事件,任何人都知道這是爲什麼?

3

還有一個解決辦法:

添加類別的UIImageView處理觸摸事件。然後發送每個觸摸事件的通知並訂閱視圖控制器(或單元控制器)中的通知。

如果您感覺活潑,也可以將方法調用轉發給視圖控制器。

然後啓用觸摸事件的小區的ImageView的:

[self setUserInteractionEnabled:YES]; 

現在,所有觸摸將發送要處理它們,沒有子。它可以重複使用。

+0

我嘗試了幾個/幾個不同的解決方案,但這個解決方案工作,並且是最簡單和最乾淨的方式來做到這一點。我可以利用現有的UITableViewCell樣式來佈局單元格(即,我不必爲單元格添加子視圖並將它們放在外面),或者子類化任何東西。非常好,謝謝! – yabada 2010-08-13 17:14:33

相關問題