如何检测状态栏中的触摸

我在我的应用程序,它可以由用户进行滚动自定义视图。但这种观点,不从UIScrollView的继承。现在,我希望用户能够将此视图滚动到顶部,就像其他任何可滚动视图所允许的一样。我认为没有直接的方法可以这样做。


Google提出了一个解决方案:http : //cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html在iOS 4.x上不再适用。那是不行的。


我有一个创建滚动视图并将其保留在某个地方的想法,只是为了捕获它的通知,然后将其转发给我的控件。这不是解决我的问题的好方法,因此我正在寻找“更清洁”的解决方案。我喜欢上述链接到子类UIApplication的一般方法。但是什么API可以给我可靠的信息?


有什么想法,帮助等吗?


编辑:关于当前解决方案,我不喜欢的另一件事是,只要当前视图没有任何滚动视图,它就只能工作。仅当周围只有一个滚动视图时,滚动到顶部的手势才有效。一旦将假人添加到具有另一个滚动视图的视图中(有关详细信息,请参见下面的答案),该手势将完全禁用。寻找更好解决方案的另一个原因...


缥缈止盈
浏览 595回答 3
3回答

阿波罗的战车

将此添加到您的AppDelegate.swift将执行您想要的操作:override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {&nbsp; &nbsp; super.touchesBegan(touches, withEvent: event)&nbsp; &nbsp; let events = event!.allTouches()&nbsp; &nbsp; let touch = events!.first&nbsp; &nbsp; let location = touch!.locationInView(self.window)&nbsp; &nbsp; let statusBarFrame = UIApplication.sharedApplication().statusBarFrame&nbsp; &nbsp; if CGRectContainsPoint(statusBarFrame, location) {&nbsp; &nbsp; &nbsp; &nbsp; NSNotificationCenter.defaultCenter().postNotificationName("statusBarSelected", object: nil)&nbsp; &nbsp; }}现在,您可以在任何需要的地方订阅活动:NSNotificationCenter.defaultCenter().addObserverForName("statusBarSelected", object: nil, queue: nil) { event in&nbsp; &nbsp; // scroll to top of a table view&nbsp; &nbsp; self.tableView!.setContentOffset(CGPointZero, animated: true)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS