2009-05-25 42 views
2

我有一个UITableview,我想在状态栏被触摸时滚动到顶部。如何检测iPhone状态栏中的触摸?

我期望找到一个通知,我可以听,然后使用tableview:scrollToRowAtIndexPath:滚动,但无法找到。

有没有办法做到这一点?

[更新]

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

我会看看我能用scrollsToTop做些什么。

+0

scrollsToTop会诀窍。后来它停止工作,因为我已经为项目添加了更多的UITextViews。有必要明确地关闭代码中的每一个scrollsToTop。 – 2009-07-11 00:01:55

回答

4

This article on cocoawithlove.com正是你想要的。

从该文章:

“的样本 应用的最棘手的部分被检测触摸在 状态栏

通过实现自定义 setContentOffset:在 方法:动画UITableView并在该方法中设置断点 ,您可以在 调试器堆栈中看到UIApplication sendEvent:方法被调用为 状态ba r触动,所以这就是我们要开始的地方。“

+1

不再有效。 – 2010-09-20 15:37:53

+0

@ Max Seelemann - 太糟糕了。 :( – Kriem 2010-09-21 15:57:34

1

它应该会自动发生,除非您将scrollsToTop属性设置为NO。

0

这可能是主要的矫枉过正,但你可以写你自己的状态栏。

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

可以检测与电池电平/状态(充电和插入的或不):

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

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

你可以得到[NSDate的日期]的时间; (然后使用NSDateFormatter进行格式化)。

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