2011-08-21 1 views
0

iPhone/iPad의 상태 표시 줄에서 터치를 식별하려고합니다. 그래서 UIApplication을 오버로드하고 sendEvent에서 클릭 한 UIView의 NSLog를 수행합니다. 나는 이것을 얻는다 :NSLog로 UIView 식별

<UIStatusBarForegroundView: 0x4e8b9d0; frame = (0 0; 768 20); alpha = 0.75; autoresize = W; layer = <CALayer: 0x4e8ba90>> 

어떻게이 식별자를 식별자로 사용할 수 있습니까? 나는 명백하게했다 :

[touch.view isKindOfClass:[UIStatusBarForegroundView class]] 

그러나 프로그램은 UIStatusBarForegroundView 개체를 찾지 못했다. 해결 방법은 상태 표시 줄이 항상 (0 0; 768 20)이므로 프레임을 확인하는 것입니다. 및 iPad 용 (0 0; 1024 20). iPhone의 경우 다른 프레임이 있기 때문에 이것은 아름다운 해결책이 아닙니다.

다른 최상의 해결책이 있습니까?

+1

을 찾지 못하는 프로그램의 문제를 해결 얻을 것이다 :

NSString *svClass = NSStringFromClass([touch.view class]); 

는 상태 표시 줄보기 당신이 할 수있는 반환 알고 나면 할 것? 상태 표시 줄은 개인 객체이며 이미 터치에 응답합니다. 앱 스토어에서 앱을 거부하기에 충분하지 않을 수 있습니다. –

+0

상태 표시 줄에서 정확히 터치를 식별하고 싶습니까? 당신이 원하는 것에 대한 콜백이있을 수 있습니다. – Akshay

+0

@Dave DeLong, 앱 스토어에서 보내지 않을 것입니다. 디버그 화면 만 시작하는 것입니다. 그러나 나는 그것을 할 수 없다는 것을 잘 알고 있습니다 : P – Rodrigo

답변

3

상태 표시 줄 클래스의 이름을 얻기 위해 아래 코드를 사용해보십시오, 당신은 알고 나면 그 다음 무엇을이 호출의 상태 표시 줄의 반환, 리터럴 문자열 비교에서이를 사용할 수 있습니다.

if ([svClass:compare @"theclassnameyougetbackfromstatusbar"]== NSOrderedSame) { 

는 희망이 당신이하려고하는 무엇 UIStatusBarForegroundView 클래스

+0

잘 작동합니다. 매우 간단한 솔루션 ... – Rodrigo

0

당신은보기에 태그 번호를 할당 할 수

tag 
An integer that you can use to identify view objects in your application. 

@property(nonatomic) NSInteger tag 
+0

작동하지 않습니다. 이것은 시스템 UIView이고 모든 시스템 뷰의 태그는 0입니다.이 뷰를 생성하지 않습니다. – Rodrigo