如何在iOS应用程序上检测接口更改

如何在iOS应用程序上检测接口更改,ios,uiview,uiviewcontroller,runtime,introspection,Ios,Uiview,Uiviewcontroller,Runtime,Introspection,是否有任何可能的方法在运行时检测用户界面上的每一个更改 我正在尝试查找当前应用程序界面中的所有对象 我试图让所有节点递归地检查主窗口,但是,例如,如何知道top viewcontroller是否更改,是否动态添加了uiview,或者是否显示了modalview 主要目标是建立一个图书馆来完成这项工作 有什么主意吗,帮帮忙 谢谢 您可以基于此,使用高级Objective-C技术编写自己的库。我不建议您这样做,因为它在iOS上基本上打破了MVC模式。取决于你想用它做什么,也许是分析 因此,如果您想主

是否有任何可能的方法在运行时检测用户界面上的每一个更改

我正在尝试查找当前应用程序界面中的所有对象

我试图让所有节点递归地检查主窗口,但是,例如,如何知道top viewcontroller是否更改,是否动态添加了uiview,或者是否显示了modalview

主要目标是建立一个图书馆来完成这项工作

有什么主意吗,帮帮忙


谢谢

您可以基于此,使用高级Objective-C技术编写自己的库。我不建议您这样做,因为它在iOS上基本上打破了MVC模式。取决于你想用它做什么,也许是分析

因此,如果您想主动检查UIView层次结构,我相信这些是可以选择的。不过,所有的选择都相当复杂

例如UIView的addSubview和removeFromSuperview,这样您就可以知道这样的更改何时发生。包括框架和边界的获取者,如果你想知道位置的话

您可以使用查看属性(如:子视图、框架、边界、超级视图)来注意任何更改。但在某一点上,您必须添加相同的对象,因为观察者可能是单态的

确定NSTimer触发的间隔,并从UIApplication上的keyWindow开始递归地遍历层次结构。不过,这会对性能产生很大影响


可能还有其他选择,但我认为这些是最好的选择。

您为什么需要这些?这听起来像是一个地狱般的工作量为设备。你想建立一些特定的人工智能或只是简单的统计数据吗?是的,确实。。可能两者都有..可能是你想要的?@HAS,不,discover不会有帮助..我已经尝试向“窗口子视图”属性添加观察者。运气不好,没有调用observeValueForKeyPath..这个问题对UIKit中的KVO做了更多解释。显然不是个好主意。下一步要做的就是大口大口地喝。