Идентификация UIView с NSLog - PullRequest
       16

Идентификация UIView с NSLog

0 голосов
/ 22 августа 2011

Я пытаюсь идентифицировать касание в строке состояния iPhone / iPad.Итак, я перегружен UIApplication и в sendEvent я делаю 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);и (0 0; 1024 20) для iPad.Это не красивое решение, потому что для iPhone будут другие рамки.

Есть и другие лучшие решения для этого?

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Попробуйте использовать приведенный ниже код, чтобы получить имя класса строки состояния, и как только вы узнаете, что строка состояния возвращает после этого вызова, вы можете использовать это в сравнении буквенных строк.

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

Как только вы узнаете, что возвращает строка состояния, вы можете сделать это:

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

Надеемся, что это обойдёт проблему программы, не находящей класс UIStatusBarForegroundView

0 голосов
/ 22 августа 2011

Вы можете присвоить номеру тега представление:

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

@property(nonatomic) NSInteger tag
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...