为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测状态栏中的触摸

如何检测状态栏中的触摸

iOS
缥缈止盈 2019-10-17 11:16:32
我在我的应用程序,它可以由用户进行滚动自定义视图。但这种观点,不从UIScrollView的继承。现在,我希望用户能够将此视图滚动到顶部,就像其他任何可滚动视图所允许的一样。我认为没有直接的方法可以这样做。Google提出了一个解决方案:http : //cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html在iOS 4.x上不再适用。那是不行的。我有一个创建滚动视图并将其保留在某个地方的想法,只是为了捕获它的通知,然后将其转发给我的控件。这不是解决我的问题的好方法,因此我正在寻找“更清洁”的解决方案。我喜欢上述链接到子类UIApplication的一般方法。但是什么API可以给我可靠的信息?有什么想法,帮助等吗?编辑:关于当前解决方案,我不喜欢的另一件事是,只要当前视图没有任何滚动视图,它就只能工作。仅当周围只有一个滚动视图时,滚动到顶部的手势才有效。一旦将假人添加到具有另一个滚动视图的视图中(有关详细信息,请参见下面的答案),该手势将完全禁用。寻找更好解决方案的另一个原因...
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

将此添加到您的AppDelegate.swift将执行您想要的操作:


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    super.touchesBegan(touches, withEvent: event)

    let events = event!.allTouches()

    let touch = events!.first

    let location = touch!.locationInView(self.window)

    let statusBarFrame = UIApplication.sharedApplication().statusBarFrame

    if CGRectContainsPoint(statusBarFrame, location) {

        NSNotificationCenter.defaultCenter().postNotificationName("statusBarSelected", object: nil)

    }

}

现在,您可以在任何需要的地方订阅活动:


NSNotificationCenter.defaultCenter().addObserverForName("statusBarSelected", object: nil, queue: nil) { event in


    // scroll to top of a table view

    self.tableView!.setContentOffset(CGPointZero, animated: true)

}


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 594 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信