簡體   English   中英

如何以編程方式觸發UIView的點擊手勢識別器

[英]How to trigger tap gesture recognizer of UIView programmatically

我想將輕擊gesture識別器附加到UIView並以編程方式觸發它。 我成功地找到了一種找到UIView輕擊手勢識別器的方法。 但是現在我不知道如何以編程方式觸發它。 我正在開發應用crawler 因此,如果我有ViewController的源代碼,那么我的搜尋器將開始搜尋以查找ViewController所有subviews 爬蟲還將找到附加到subviews gesture 並觸發點擊gesture

注意:我知道如何將手勢識別器附加到UIView並觸發它。 但就我而言,我想使應用程序的點擊過程自動化。 只是考慮一下,因為我想在運行時找到UIView點擊手勢識別器並觸發它。

我通過創建假觸摸解決了這個問題。 由於手勢無法顯示其動作和選擇器,因此無法觸發手勢。 但是,因為我有要點擊的UIView 我可以在該UIView上創建假觸摸。 虛假觸摸會自動觸發輕擊手勢。 鏈接對此很有幫助。

您不能這樣做,因為該手勢不會暴露其目標和動作。 您需要創建一個做到這一點的子類,或者使用某些私有API來訪問這些值,以便可以使用它們。 如果要創建通用的東西,那么子類選項無論如何都不好,但是從更廣泛的角度來看,並不是所有的東西都可以使用手勢,因此您的解決方案是不完整的。

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

Techcraze兄弟總體上

手勢實際上是一個或多個手指在屏幕的特定區域上發生的觸摸和移動,在該區域上存在感興趣的視圖

談到Tap手勢識別器

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM