【问题标题】:How do I detect a touch in the iPhone status bar?如何检测 iPhone 状态栏中的触摸?
【发布时间】:2009-05-25 16:12:13
【问题描述】:

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

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

有没有办法做到这一点?

[更新]

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

我会看看我可以用 scrollsToTop 做什么。

【问题讨论】:

  • scrollsToTop 可以解决问题。后来它停止工作,因为我在项目中添加了更多 UITextViews。有必要在代码中明确关闭每一个的 scrollsToTop。

标签: iphone cocoa-touch uitableview statusbar


【解决方案1】:
cocoawithlove.com 上的

This article 正是您想要的。

来自那篇文章:

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

通过实现自定义 setContentOffset:animated: 方法 UITableView 和设置断点 在该方法中,您可以在 UIApplication 的调试器堆栈 sendEvent: 方法被调用 状态栏触摸,所以这就是 我们开始吧。”

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的。但是,只能有一个 scrollView 将 scrollsToTop 设置为 YES。除了滚动到顶部的滚动视图之外,捕捉触摸以执行其他花哨的事情是不可能的。但我同意你的观点, setScrollsToTop:YES 是最简单的解决方案。 :)
    • 好点。在最初的问题中,您似乎不需要做任何花哨的事情。
    【解决方案3】:

    这可能有点矫枉过正,但您可以编写自己的状态栏。

    您可以通过在应用程序列表中将“状态栏最初隐藏”设置为“是”来隐藏实际的状态栏。然后在视图顶部创建您自己的自定义状态栏视图,高度为 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但是可以用一定的匠心粗略估计一下。

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多