Ios MVC:我应该在视图控制器或UIView的自定义子类中添加并实现触摸手势吗
我有一个自定义的Ios MVC:我应该在视图控制器或UIView的自定义子类中添加并实现触摸手势吗,ios,objective-c,uiview,uiviewcontroller,uigesturerecognizer,Ios,Objective C,Uiview,Uiviewcontroller,Uigesturerecognizer,我有一个自定义的UIView子类,名为productcardwiew,它非常简单,有一些UIImageViews和UILabels作为它的子视图。我添加了子视图,并设置了-(void)drawRect:(CGRect)rect方法,所有的东西都很好 在我的视图控制器中,我从远程服务器获取一些数据,从而填充应该看到的productCardViews。其目的是当用户点击这些卡中的每一张时,程序会转到一个目标url(每个卡的NSURL属性) 问题是,根据MVC的基础知识,我应该在我的productCa
UIView
子类,名为productcardwiew
,它非常简单,有一些UIImageView
s和UILabel
s作为它的子视图。我添加了子视图,并设置了-(void)drawRect:(CGRect)rect
方法,所有的东西都很好
在我的视图控制器中,我从远程服务器获取一些数据,从而填充应该看到的productCardView
s。其目的是当用户点击这些卡中的每一张时,程序会转到一个目标url(每个卡的NSURL
属性)
问题是,根据MVC的基础知识,我应该在我的productCardView实现内部或在我的视图控制器中向视图添加UITapgestureRecognitor
?
如果我要将其添加到视图控制器中,基本上我会将适当的代码放入viewDidLoad
方法中,在该方法中创建卡的实例,但如果我要在视图本身中实现它,我应该将代码放在哪里?(在-(void)drawRect:(CGRect)rect
?)无论点击是在卡上还是在视图控制器上,您都应该从视图控制器加载url
所以,这意味着要么
卡感觉到点击并调用其委托(视图控制器)中的函数,然后加载URL
或
点击手势识别器(在视图控制器中)从卡中获取点击并打开URL
如果卡是在多个位置使用的控件(或者如果屏幕上有多个),则最好将productCardView
设置为UIControl
的子类,而不是UIView
。(UIButton
,UISlider
等…都是UIControl
的子类)
你不需要做太多的改变,但你可以做一些像
[productCardView addTarget:self action:@selector(cardTapped:) event:UITouchUpInside];
就像一个按钮
然后,您在卡视图中处理触摸,并触发事件的操作UITouchUpInside
,非常感谢,因为我的视图控制器上有几个这样的卡,所以我将其作为UIControl
的子类,并使用了目标/操作。