2013-03-20 17 views
3

我知道已經有很多類似這樣的問題,但我已經嘗試過所有這些問題,並且未能解決我的問題,因此我發佈了我的問題。首先,我試過的問題是:在長按手勢識別器上獲取錯誤的UIButton標籤

1)How to get button.tag via longPressGestureRecognizer?

2)UIButton Long Press Event

在我的應用我在廈門國際銀行12 UIButtons。在長按UIButton我有這個方法被調用。使用gesture.view.tag屬性總是會給我提供相同的標籤(即每當我點擊不同的UIButtons時)。

- (IBAction)longPress:(id)sender { 

    UILongPressGestureRecognizer* gesture=(UILongPressGestureRecognizer*)sender; 
    NSLog(@"Tag---> %d",gesture.view.tag); 
    } 

我的廈門國際銀行看起來是這樣的:

enter image description here

更新1:

之前,有人已經用XIB1糊塗,我必須說,UIButtons設置自定義類型,因此它們在UIImageView下不可見。

+0

當然是的.. – 2013-03-20 13:22:59

+0

它會崩潰。發件人是'UILongPressGestureRecognizer'。它沒有標籤屬性。它的視圖是'UIButton'將具有標籤屬性。請參考[Richard j Ross's](http://stackoverflow.com/users/427309/richard-j-ross-iii)的答案。感謝您的努力。 – 2013-03-20 13:29:02

+1

是的,我注意到關於手勢識別器,我相信RJR的解決方案是正確的 – lifetimes 2013-03-20 13:30:07

回答

7

看起來UIGestureRecognizer可以跟蹤多個視圖,但它不報告它正在跟蹤多個視圖。因此,當您檢查UIGestureRecognizerview屬性時,它將設置爲識別器添加到的最後一個視圖。

docs

手勢識別上的觸摸命中測試,以一個特定視圖和所有視圖的子視圖的操作。因此它必須與該觀點相關聯。爲了建立關聯,你必須調用UIView方法addGestureRecognizer :.手勢識別器不參與視圖的響應者鏈。

此方案中的解決方案是爲每個需要識別的視圖提供手勢識別器,並將它們鏈接到相同的委託選擇器。

注意:這個問題(和我的答案)起源於NSChat chat room, on March 20th, 2013.它決定發佈在這裏供將來參考。

+0

感謝理查德的筆記。 – 2013-03-20 13:29:20