我正在尝试“镜像”视图控制器:
我已经MkMapViews通过处理诸如区域更改或在vc1中滚动并告诉vc2设置其区域或滚动到该位置之类的东西来进行诸如简单视图控制器之类的工作,在vc1上使用UIControl IBActions也在其中调用了相同的动作vc2等
这适用于简单的情况,但是问题来自于复杂的视图控制器,这些视图控制器具有诸如UITableViews自定义UITableViewCells,扩展/收缩之类的东西。我发现自己必须实现每个可能的委托/动作,并使一堆对象意识到他们不应该做的事情不知道,如果我要使其完全可重用,这似乎是错误的。
我尝试过遍历vc1的子视图树,并objc_setAssociatedObject()用于将视图控制器实例中的UIResponders相互关联,但是我仍然必须捕获vc1上的每个委托/动作以在vc2上查找UIResponder模仿事件。必须有一种更简单的方法来执行此操作。我也尝试了子类化UIWindow和重写sendEvent,并将事件发送到外部显示器UIWindow,但是每个事件UIEvent似乎都包含将其与UIWindow原始显示器相关联的信息UIWindow,因为当我发送事件时,外部显示器没有执行任何操作。
我将如何以一种允许我将镜像抽象成一个不错的子类或某种东西的方式来做到这一点,而不必用特殊情况的代码乱扔每个视图控制器?我曾经考虑过让UIView的触摸事件陷入混乱,但是我什至不确定这是否会有所帮助,因为UITouches和UIEvents已与它们源自的UIWindow绑定在一起,而UIEvent似乎并没有为我提供创建自己的方法事件。
注意:我要执行的操作不是默认的Airplay镜像,因为我希望外部显示体验能够充分利用完整的显示分辨率和尺寸。想法是允许iPhone应用程序在设备本身上运行(即比其宽),同时在适合该显示器的外部显示器上提供体验(比其高,更大的分辨率,更大的机会)。以更具可读性的高清电视格式显示信息)。
有什么想法吗?