2

我想獲取水龍頭gesture識別器附加到UIView並以編程方式觸發它。我成功找到了找到UIView的輕敲手勢識別器的方法。但是現在我不知道如何以編程方式觸發它。我正在致力於應用程序crawler。所以,如果我有一個ViewController的源代碼,那麼我的爬蟲將開始爬行,找到所有subviewsViewController。此外,抓取工具會找到附加到subviewsgesture。並觸發水龍頭gesture如何以編程方式觸發UIView的水龍頭手勢識別器

注:我知道如何將手勢識別器附加到UIView並觸發它。但在我的情況下,我想自動化應用程序的點擊過程。只要考慮我想運行時找到觸摸手勢識別器UIView並觸發它。

+4

如果您希望以編程方式工作,那麼爲什麼需要手勢?只能調用您的方法。 –

+2

點擊手勢總是由用戶觸發。爲什麼你需要以編程方式觸發。 – EricXuan

+0

我正在開發應用程序爬行器。因此,抓取工具將點擊任何點擊手勢識別器。 – techcraze

回答

2

我通過創建假觸摸解決了這個。觸發手勢是不可能的,因爲手勢不會暴露其動作和選擇器。但正如我有UIView我想點擊。我可以在UIView上創建一個假的觸摸。這種假觸摸會自動觸發輕擊手勢。 This鏈接對此非常有幫助。

1

你不能,因爲手勢不暴露其目標和行動。你需要創建一個子類,或者使用一些私有API來訪問這些值,以便使用它們。如果你正在創建一些常規的東西,那麼子類選項無論如何都是不好的,但是更廣泛地說,不是所有的東西都可以用手勢操作,所以你的解決方案是不完整的。

我認爲大多數測試工具都使用可訪問性界面來查找交互式視圖並以編程方式點擊它們。

0

techcraze兄弟一般Gesture Says

手勢是實際接觸,並在屏幕的特定區域,其中感興趣視圖中存在有

當這種情況發生的一個或多個手指的運動談到Tap gesture Recognizer

UITapGestureRecognizer:ŧ他的班級認爲在視圖上做出了輕拍手勢。它可以用來處理單個或多個水龍頭,可以用一個或多個手指。攻絲是用戶製作的最常見的手勢之一。

沒有手指幫助你不能自動做兄弟。

所以我們的代碼去

- (void)viewDidLoad 
{ 
    UITapGestureRecognizer *tapgesture =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapView:)]; 
    tapgesture.numberOfTouchesRequired=1; 
    [self.view addGestureRecognizer:tapgesture]; 
} 

-(void)tapView:(UITapGestureRecognizer *)gesture 
{ 
    NSLog(@"The taped tag view is - %ld",gesture.view.tag); 
} 
+0

我知道這個兄弟。我想知道的是,當用戶在屏幕上點擊時,必須有一些方法可以識別點擊並觸發某種方法。我想找出CocoTouch使用哪種方法,以便它發現點擊的視圖並觸發手勢。 – techcraze

+0

兄弟當您點擊查看tapView:方法自動調用。參見操作:@selector(tapView :)。將放置斷點放在您的tapView方法中。它調用一次點擊視圖。 – user3182143

+0

是的。但是如果你不知道它附帶什麼動作呢?在我的情況下,我將只有看法的姿態。從手勢來看,我必須找到它的行動或任何方式來觸發,而不會發現它的行爲。我認爲@Wain的回答是有道理的,該姿勢不暴露其目標和行動。 – techcraze

相關問題