使用NSLog识别UIView

时间:2011-08-21 20:45:21

标签: iphone objective-c ipad uiview nslog

我正在尝试识别iPhone / iPad状态栏中的触摸。所以,我重载了UIApplication,在sendEvent中,我执行了点击的UIView的NSLog。我明白了:

   <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);和(0 0; 1024 20)为iPad。这不是美丽的解决方案,因为对于iPhone,会有其他框架。

还有其他最佳解决方案吗?

2 个答案:

答案 0 :(得分:3)

尝试使用下面的代码获取状态栏类的名称,一旦知道状态栏从此调用返回的内容,就可以在文字字符串比较中使用它。

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

一旦您知道状态栏视图返回的内容,您就可以执行此操作:

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

希望这可以解决程序找不到UIStatusBarForegroundView类的问题

答案 1 :(得分:0)

您可以为视图指定标签号:

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

@property(nonatomic) NSInteger tag