0

我有一個平面圖的UIImageView當他點擊樓層平面圖的特定區域,它會顯示該地區的內部圖像什麼客戶想要做的是。 ..點擊時我沒有顯示該區域的問題。我的問題是要自己點擊的區域。看看我的初步實施:(我不知道這是否是正確的方法)iOS的 - 在UIImageView的點擊特定區域,並進行動作

enter image description here

主浴區有一個多餘的地方,我把一個按鈕的話,那麼當用戶點擊該區域,我將執行顯示內部圖像的動作...也在「步入式衣櫃」區域中,我有2個按鈕。

那麼,有沒有一種方法來優化這個實現?

+0

我想你已經實現了合適的解決方案。沒有優化的方法來解決這種情況。您可以使用tapGestureRecognizer來代替按鈕,但在這種情況下,您必須創建那麼多識別器。 – iPhone

回答

0

一種選擇是使用UITapGestureRecognizer到ImageView的,那麼當手勢發射

- (IBAction)tap:(UITapGestureRecognizer*)sender { 
    CGPoint touchPoint = [sender locationInView:yourimageview]; 
    //Then decide the point in which area to do different action 
} 
0

你說

點擊時,我沒有問題,顯示該區域。

重要的是要知道,如何顯示區域,因爲這可能是解決問題的關鍵。

如果您有一些路徑(CGPath,UIBezierPath)來確定要突出顯示的區域,則可以使用相同的路徑進行點擊測試。無論是在按鈕子類,UIView子類還是手勢識別器中。

即該代碼使用的層的掩蔽路徑,如果存在的話。當然,這可能有幾條路。

@implementation MyView 
// 
// ... 
// 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    CGPoint p = [self convertPoint:point toView:[self superview]]; 
    if(self.layer.mask){ 
     if (CGPathContainsPoint([(CAShapeLayer *)self.layer.mask path], NULL, p, YES)) 
      return YES; 
    }else { 
     if(CGRectContainsPoint(self.layer.frame, p)) 
      return YES; 
    } 
    return NO; 
} 

@end 

點擊手勢識別器只會在視圖內檢測到點擊。

同樣pointInside:withEvent:將工作基於路徑的子類的UIButton。