2012-04-27 132 views
10

我只是一個普通的UITableView,我跑這個代碼:什麼是UIGobblerGestureRecognizer?

UITableView *tableView = [[UITableView alloc] init]; 
for(UIGestureRecognizer *gesture in tableView.gestureRecognizers) 
{ 
    NSString *className = NSStringFromClass([gesture class]); 
    NSLog(@"ClassName:%@", className); 
} 

一個輸出線爲:ClassName:UIGobblerGestureRecognizer

令人驚訝的谷歌對這個沒什麼。任何人都知道它是什麼?

+0

哈哈,有趣的班級名稱!也許這是瘋狂的滑動? – Costique 2012-04-27 17:39:20

+4

那麼,因爲它不是公共API,我的建議將是「沒關係,你可以忽略它」:) – 2012-04-27 17:40:03

+0

哈哈我的意思是,如果它只是一個典型的類名,我會忽略它,但一個'戈布勒爾 - 我想知道那是幹什麼的! – Snowman 2012-04-27 17:42:02

回答

7

這很可能是蘋果公司使用內部類。我遇到了Apple爲某些特定用途創建的UIGestureRecognizers的自定義子類。我確定他們需要根據各種原因創建自定義手勢識別器,就像我擁有並且不是所有這些類都暴露給我們使用一樣。

1

那絕對應該是私有的API的一部分。這

我會建議留出它

2

退房http://oleb.net/blog/2013/02/new-undocumented-apis-ios-6-1/

BJ荷馬認爲UIGobblerGestureRecognizer用來避免 識別而動畫正在進行中。否則,它是 不活動。在一個有趣的Twitter對話,菲利波Bigarella 和康拉德克萊默發現,UIGobblerGestureRecognizer可以 爲了防止其他手勢識別從 接收他們在某些情況下,「狼吞虎嚥」的一面。這些是什麼情況,我 不知道。

2

我很肯定這是用來防止正常交互,而特定的細胞顯示刪除確認按鈕,並承認任何觸摸下來,從而觸發細胞返回到非編輯狀態。

它具有這樣的方法,我假設excludedView是顯示刪除確認按鈕的單元格,因爲你可以仍然正常在這種狀態下細胞相互作用。

- (id)initWithTarget:(id)arg1 action:(SEL)arg2 excludedView:(id)arg3;

https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIGobblerGestureRecognizer.h

2

總之,從我讀過,什麼我的實驗已經表明,在「火雞」似乎吞噬的滑動和觸摸在表視圖(實際上的表格單元格)當狀態轉換(由用戶的觸摸或刷動啓動)正在進行時,以便狀態轉換可以在用戶可以再次觸摸表之前完成。蘋果公司可能會在其他情況下使用它,但從桌面上看,我已經觀察到了狼吞虎嚥。

現在很長的故事:假設你的表視圖實現對錶格單元格一個「抽屜」,像蘋果的郵件應用程序或消息應用。當您用抽刷器打開抽屜並對抽屜中的任何按鈕採取行動時,一切正常。但是,如果您只是用第四次滑動關閉繪圖,則可能會發現您的下一個背部滑動在隨機單元格上不起作用。但是如果你繼續進行背部滑動,下一次滑動通常會再次顯示抽屜。簡而言之,如果您只是通過滑動打開和關閉隨機單元格上的抽屜,您會發現抽屜有時無法打開。

我看到我的桌子此行爲,並認爲我做錯了什麼。我嘗試了很多東西,最終實現了我自己的UITableView的子類,它也支持UIGestureRecognizerDelegate。在我的子類中,我實現了委託的shouldBeRequiredToFailByGestureRecognizer函數,只是爲了打印出gestureRecognizer和其他的GureureRecognizer對。然後我發現,當識別後面的輕掃時,狼吞虎嚥不在對中。但是當後刷不起作用時,狼吞虎嚥絕對存在。

網絡上的一般觀點是,當一個轉換已經在進行時,使用防火牆來防止用戶在表上引起另一個狀態轉換。如果用戶確實採取了一些行動(通過觸摸抽屜中的按鈕),那很好。但是,當使用者關閉抽屜時,應該取消飼料。或者只有當用戶採取行動時才應該添加雄火雞。在我意識到之後,我繼續嘗試關於蘋果應用程序的理論。我已經知道郵件應用程序的行爲完全響應每一次刷卡。但消息應用程序間歇性地重複抽屜打開滑動,很像我的應用程序。所以我想Mail的開發人員會更加小心謹慎,並使用內部知識來正確使用它。我的觀察是在iPhone 6和iPad 2上的iOS 8.4上完成的。我相信同一個gobbler問題可以追溯到至少從第一個iOS 8版本開始,因爲我知道我的應用程序在第1天(幾個月前)有問題,但我剛剛圍繞着看問題。