2014-04-11 2 views
0

런타임 중에 사용자 인터페이스의 모든 변경 사항을 감지 할 수있는 방법이 있습니까 ??iOS 응용 프로그램에서 인터페이스 변경을 감지하는 방법

현재 앱 인터페이스에서 모든 개체를 찾으려고합니다.

모든 노드가 재귀 적으로 메인 윈도우를 검사하도록하려하지만, 예를 들어 상단 viewcontroller가 변경되는지 또는 동적으로 uiview를 추가했는지 또는 모달 뷰를 표시하는지 어떻게 알 수 있습니까?

주요 목적은이 작업을 수행하는 라이브러리를 가지고있다 ..

어떤 생각, 도움이 필요하십니까?

감사합니다.

+0

왜 필요한가요? 그것은 장치를위한 작업량의 지옥처럼 들린다. 특정 인공 지능이나 일반 통계를 작성하고 싶습니까? – Michal

+0

예, 실제로 .. 둘 다 .. – Frade

+0

[이 도구는 '공개'] (http://revealapp.com)이 원하는 것일 수 있습니까? – HAS

답변

0

고급 Objective-C 기술을 사용하여 자신 만의 라이브러리를 작성할 수 있습니다. 대부분 iOS에서 MVC 패턴을 깨기 때문에이 작업을 수행하지 않는 것이 좋습니다. 분석을 위해 무엇을 사용 하시겠습니까?

위의 두 가지 옵션은 적극적으로 UIView 계층을 검사하려는 경우 내가 믿는 옵션입니다. 모든 옵션은 꽤 복잡합니다.

  • Swizzle methods 등 그 변화를 어떻게 같이 할 때 알 수 있도록 addSubviewUIViewremoveFromSuperview, 등. 위치를 알고 싶으면 프레임과 경계의 게터를 포함하십시오. subviews, frame, bounds, superview가 변경 사항을 통지 :

  • 당신은 KVO과 같은 속성을보고 사용할 수 있습니다. 그러나 어느 시점에서는 옵서버와 동일한 객체를 추가해야합니다 (싱글 톤일 수 있음).

  • NSTimer에 의해 발사되는 간격을 결정 재귀 적 UIApplicationkeyWindow에서 시작하는 계층 구조를 통해 이동합니다. 이것은 성능에 큰 영향을줍니다.

다른 옵션이있을 수 있지만 이는 최선의 선택이라고 생각합니다.

+0

이미 window subviews 속성에 observer를 추가했습니다. 아니 행운, observeValueForKeyPath 호출되지 않습니다 .. – Frade

+0

도 UINavigationController의 viewControllers 속성에 시도, 아니 운이 .. – Frade

+0

질문 http://stackoverflow.com/questions/6612523/ios-how-do-i-know-if-a -property-is-kvo-compliant는'UIKit'에서 KVO에 대해 좀 더 자세히 설명합니다. 분명히 좋은 생각은 아닙니다. 땀을 흘리는 것이 다음 시도 일 것입니다. – Legoless