2012-01-05 52 views
0

我有一個應用程序,在PDF表單中有一個相當大的幫助部分。在我看來,PDF是如此之大,我可以告訴儀器它會給處理器帶來太多的壓力,所以我會逐步淘汰它。在UI元素(或如何確定哪個元素被按下?)上的Longpress

我想,較輕的實施將使用一個UILongPressGestureRecognizer,我可以附加到將顯示指定的文本中可能是酥料餅或UIMenuController指示所選擇的元件的功能每個UI元素。

所以我的問題是這樣的:我怎麼能附加東西像標籤到視圖中的每個元素,所以它可以傳遞給一個單一的方法?當我嘗試使用標籤時,發現無法通過我的方法簽名的(id)sender部分訪問它,因此無法區分這些元素。

編輯:下面的人:雖然你已經解決了我的facepalm問題,以確定視圖的標籤,如何可以將附加手勢識別器到UIBarButtonItem以確定它的標籤?你的實現允許一個非常令人討厭的無法識別的選擇器,因爲UIGestureRecognizers沒有標籤屬性。

回答

1

您可以從作爲發件人傳入的對象派生標記。只需要檢查它的課程並適當地投下它。 tag是一個UIView屬性,所以我們將從那裏開始。

- (void)someMethod:(id)sender 
{ 
    if (![sender isKindOfClass:[UIView class]]) 
     return; 

    UIView *senderView = (UIView *)sender; 
    NSInteger tag = senderView.tag; 
} 
+0

非常好。我現在將測試它。 – CodaFi 2012-01-05 21:21:17

+0

雖然它有效,請檢查我的編輯。 – CodaFi 2012-01-05 21:52:27

1

您可以通過 - (IBAction)xxxxxx:(id)發件人訪問標籤;像這樣:

NSInteger tagValue = [sender tag]; 

但是,爲什麼你不能只通過Interface Builder將操作連接到你的元素? 你在這裏使用的UI元素是什麼?

+0

這一切都在代碼...這就是爲什麼。我使用UIBarbuttonItems和UIViews。此外,正如我上面所解釋的,將代碼掛鉤不會支持差異化。 – CodaFi 2012-01-05 21:19:31

+0

擰我最後的評論,你的作品也是如此。 – CodaFi 2012-01-05 21:42:33

相關問題