您需要使用委托方法告诉父视图控制器有触摸,因此它可以呈现另一个视图控制器。
在UIView
子类标题的顶部,添加以下内容:
@protocol MyCustomViewDelegate <NSObject>
- (void)customViewCircleTapped;
@end
然后,在您的视图声明中(您拥有的自定义视图子类的现有声明):
@interface MyCustomView : UIView
...
@property (weak) id<MyCustomViewDelegate> delegate;
之后,在您的视图控制器中,您需要设置view.delegate = self
,以便视图可以引用视图控制器。
然后,在您的视图控制器标题中,将您的声明更改为如下所示:
@interface MyViewController : UIViewController <MyCustomViewDelegate>
然后customViewCircleTapped
在视图控制器实现中实现:
- (void)customViewCircleTapped {
... // Open a view controller or something
}
完成后,在视图中的触摸检测代码中,您可以添加:
[self.delegate customViewCircleTapped];
这样做是让您的自定义视图能够通过调用此方法(如果需要传递数据,您可以更改它并添加参数)告诉其父视图控制器发生了什么事,然后视图控制器可以打开另一个视图控制器或基于此执行一些操作。
视图检测触摸→处理触摸→customViewCircleTapped
在视图控制器上调用委托方法→视图控制器打开另一个视图控制器