簡體   English   中英

多個手勢響應器可實現單個視圖

[英]Multiple Gesture Responders for a Single View

我有一張要設置為響應幾個不同手勢響應器的圖像。 因此,例如,如果觸摸了圖片的一部分,則我希望一個選擇器被調用,而另一個選擇器則用於圖片的另一部分。

我查看了UIGestureRecognizerUITapGestureRecognizer類,但是找不到指定與它們關聯的圖像區域的方法。 在iOS中完全可行嗎? 如果是這樣,我應該考慮使用哪些類?

最簡單的解決方案是在圖像上放置不可見的視圖,並將手勢識別器放在圖像上。

如果這不可行,則必須查看手勢識別器的輕擊處理程序中的locationInView並根據用戶點擊的位置確定要執行的操作。

使用locationInView:屬性確定點擊發生的位置,然后有條件地調用方法。 您可以通過設置一些與您的點擊區域相對應的CGRect來實現。 然后,使用CGRectContainsPoint()函數確定拍子是否落在擊中區域之一中。

您的點擊手勢識別器動作可能看起來像這樣:

- (void)tapGestureRecognized:(UIGestureRecognizer *)recognizer
{
    // Specify some CGRects that will be hit areas
    CGRect firstHitArea = CGRectMake(10.0f, 10.0f, 44.0f, 44.0f);
    CGRect secondHitArea = CGRectMake(64.0f, 10.0f, 44.0f, 44.0f)

    // Get the location of the touch in the view's coordinate space
    CGPoint touchLocation = [recognizer locationInView:recognizer.view];

    if (CGRectContainsPoint(firstHitArea, touchLocation))
    {
        [self firstMethod];
    }
    else if (CGRectContainsPoint(secondHitArea, touchLocation))
    {
        [self secondMethod];
    }
}

暫無
暫無

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

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