Как обнаружить касание в строке состояния iPhone?

У меня есть UITableview, который я хотел бы прокручивать вверх при касании строки состояния.

Я ожидал найти уведомление, которое я мог бы прослушать, а затем использовать tableview:scrollToRowAtIndexPath: для прокрутки, но не смог найти ни одного.

Есть ли способ сделать это?

[Обновлять]

Найдя в сети еще кое-что, я подозреваю, что это симулятор меня кусает. Мой UIScrollView не может прокрутить вверх в симуляторе, но я не пробовал на оборудовании. Кроме того, у меня есть один UIScrollView, но также и UITextView, поэтому мне интересно, ест ли он его.

Я посмотрю, что я могу сделать с помощью scrollsToTop.


person Steve Weller    schedule 25.05.2009    source источник
comment
scrollsToTop делает свое дело. Позже он перестал работать, потому что я добавил в проект больше UITextViews. Приходилось явно отключать scrollsToTop на каждом в коде.   -  person Steve Weller    schedule 11.07.2009


Ответы (3)


Эта статья на cocoawithlove.com — это именно то, что вам нужно.

Из той статьи:

«Самая сложная часть примера приложения — обнаружение касания в строке состояния.

Реализуя пользовательский метод setContentOffset:animated: в UITableView и устанавливая точку останова в этом методе, вы можете увидеть в стеке отладчика, что метод UIApplication sendEvent: вызывается для касаний строки состояния, так что с этого мы и начнем».

person Kriem    schedule 25.05.2009

Это должно происходить автоматически, если вы не установите для свойства scrollsToTop значение NO.

person Chris Lundie    schedule 25.05.2009
comment
Истинный. Но может быть только один scrollView со значением scrollsToTop, установленным как YES. Таким образом невозможно поймать прикосновение, чтобы делать другие причудливые вещи, кроме прокрутки scrollView вверх. Но я согласен с вами, что setScrollsToTop:YES — самое простое решение. :) - person Kriem; 25.05.2009
comment
Хорошая точка зрения. В исходном вопросе не было похоже, что вам нужно делать что-то необычное. - person Chris Lundie; 28.05.2009

Это может быть излишним, но вы можете написать свою собственную строку состояния.

Вы можете скрыть фактическую строку состояния, установив для параметра «Строка состояния изначально скрыта» значение YES в списке приложений. Затем создайте собственное представление строки состояния в верхней части представления с высотой 20 пикселей, которое является либо UIButton, либо просто UIView с UITapGestureRecognizer.

Вы можете определить уровень/состояние батареи (заряжена и подключена или нет) с помощью:

UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];

float batteryLevel = [myDevice batteryLevel];
UIDeviceBatteryState batteryState = [myDevice batteryState];

Вы можете получить время с помощью [NSDate date]; (затем используйте NSDateFormatter для форматирования).

Получение уровня сигнала немного сомнительно, но его можно приблизительно оценить с определенной степенью изобретательность.

person Keller    schedule 06.07.2011