我是iOS
和Swift
的新手,在我解释时请耐心等待,如果有什么不清楚请告诉我,我会解释。
我有iOS
个应用,它包含一些UIImages
,UIButtons
等等。触摸后它们互动。
我想在未触摸应用程序(屏幕上的任何位置)一段时间(比如10秒)时调暗屏幕,然后在UIScreen
的任何位置检测到触摸时立即调暗我想再次提高亮度。
我发现以下行可用于调整屏幕亮度:
UIScreen.main.brightness = CGFloat(0.5)
但我不知道如何在屏幕上的任何地方检测到触摸(不会打扰所有其他按钮等...),也可以将其与计时器结合使用。
(我的应用程序仅用于特定目的,不会分发,只能在iOS10的iPhone 7设备上运行)
答案 0 :(得分:0)
嗯,为此目的有一个API。
func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
返回包含指定点的视图层次结构(包括其自身)中接收器的最远后代。
此方法通过调用每个子视图的point(inside:with :)方法来遍历视图层次结构,以确定哪个子视图应该接收触摸事件。如果point(inside:with :)返回true,则类似地遍历子视图的层次结构,直到找到包含指定点的最前面的视图。如果视图不包含该点,则忽略其视图层次结构的分支。您很少需要自己调用此方法,但可以覆盖它以隐藏子视图中的触摸事件。
您需要创建要在其中检测触摸的UIView
或UIWindow
的子类。
然后覆盖hitTest
函数并在其中实现所需的逻辑。
<强>更新强>
请参阅runnable Xcode 8 project以获取主意。运行应用程序并尝试按下视图及其外部,您将在调试器控制台中看到有关触摸视图信息的日志。希望它会对你有所帮助。