如何在iPhone状态栏中检测到触摸?

时间:2009-05-25 16:12:13

标签: iphone cocoa-touch uitableview statusbar

我有一个UITableview,我想在触摸状态栏时滚动到顶部。

我希望找到一个我可以收听的通知,然后使用tableview:scrollToRowAtIndexPath:滚动,但是找不到。

有办法做到这一点吗?

[更新]

在网上查找更多内容,我怀疑这是模拟器咬我的。我的UIScrollView无法在模拟器中滚动到顶部,但我还没有尝试过硬件。另外,我有一个UIScrollView,还有UITextView,所以我想知道是不是在吃它。

我将看到我可以用scrollsToTop做什么。

3 个答案:

答案 0 :(得分:4)

cocoawithlove.com 上的

This article正是您想要的。

从那篇文章:

  

“样本中最棘手的部分   应用程序正在检测触摸   状态栏。

     

通过实施自定义   setContentOffset:animated:方法   UITableView并设置断点   在那种方法中,你可以看到   调试器堆栈即UIApplication   调用sendEvent:方法   状态栏接触,所以就在那里   我们将开始。“

答案 1 :(得分:1)

除非您将scrollsToTop属性设置为NO。

,否则它应该自动发生

答案 2 :(得分:0)

这可能是一个重大的矫枉过正,但您可以编写自己的状态栏。

您可以通过在应用程序plist中将“状态栏最初隐藏”设置为YES来隐藏实际状态栏。然后在视图顶部创建自己的自定义状态栏视图,其高度为20px,可以是UIButton,也可以是带有UITapGestureRecognizer的UIView。

您可以使用以下方法检测电池电量/状态(充电和插入与否)

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

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

您可以[NSDate date]获得时间; (然后使用NSDateFormatter进行格式化)。

获得信号强度为a little iffy,但可以用一定程度的独创性粗略估计。