2

的我的自定義子類中添加和實現觸摸手勢我有UIView這個自定義子類,稱爲productCardView,這是非常簡單的,有一些UIImageView S和UILabel S作爲它的子視圖。我添加子視圖並將它們設置爲- (void)drawRect:(CGRect)rect方法,一切都很好。MVC:我應該在視圖控制器或UIView的

在我的視圖控制器中,我從遠程服務器獲取一些數據,因此填充應該看到的productCardView。目的是當用戶點擊這些卡片中的每一個時,程序進入目標url(每張卡片的NSURL屬性)。

問題按照MVC的基礎IS,我要補充一個UITapGestureRecognizer的觀點,我實現的productCardView或在我的視圖控制器裏面? 如果我要將它添加到視圖控制器中,基本上我會將相應的代碼放在viewDidLoad方法中,我在其中創建卡的實例,但是如果我應該在View中實現它,其中應該將碼? (在-(void)drawRect:(CGRect)rect?)

回答

1

無論水龍頭是在卡上還是在視圖控制器上,您都應該從視圖控制器加載URL。

所以,這意味着要麼...

  1. 卡感覺水龍頭,在委託(視圖控制器)調用一個函數,然後加載一個URL。

  • 敲擊手勢識別器(在視圖控制器)從卡獲得的抽頭和打開該URL。
  • 如果該卡是在幾個地方使用的控制(或者,如果你有幾個在屏幕上),你可能會更好做了productCardViewUIControl,而不是UIView一個子類。 (UIButton,UISlider等等都是UIControl的所有子類)。

    沒有太多你需要改變,但你可以這樣做......

    [productCardView addTarget:self action:@selector(cardTapped:) event:UITouchUpInside]; 
    

    就像一個按鈕。

    然後處理卡片視圖中的觸摸和trigger事件UITouchUpInside的操作。

    +1

    非常感謝,因爲我在視圖控制器上有幾張這樣的卡片,我將它製作爲'UIControl'的一個子類並使用了目標/操作。 – 2014-11-06 08:40:25