gpt4 book ai didi

ios - 如何检测 iOS UIViewController 是否正在被交互或触摸

转载 作者:行者123 更新时间:2023-11-30 12:20:19 24 4
gpt4 key购买 nike

我有一个特定的 UIViewController,我想阻止 iOS 完成的idleTimer 处理。我知道我可以设置:UIApplication.shared.isIdleTimerDisabled = true但是,我希望能够设置一个计时器,以便在固定时间后重新启用正常的系统空闲计时器处理,这样我就可以保持屏幕打开最短的时间。该应用程序的性质是这样的,您将打开一个 View 并使用它来引用/阅读很长一段时间。

关键点是我希望每次用户触摸屏幕或与设备交互时计时器都会重新启动。所以我需要能够检测用户是否做了任何事情,这样我就可以休息了。

我尝试重写 Controller 中的touchesEnded方法,但是测试表明该方法从未被调用。任何想法都会受到欢迎(在 swift 3 中:)

最佳答案

Swift 3.0:-

需要在没有IBOutlet的情况下检测特定 View 的触摸,然后选择该特定的UIView,然后转到属性检查器 -> View -> 标记并根据需要将 Integer 设置为标记。

enter image description here

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

let touch = touches.first

let tag = touch?.view?.tag
if tag == 1{
//Do More....
}else{
//......
}

}

如果您需要使用IBOutlet进行检查,请按如下操作。

这里,@IBOutlet var DiamondView:UIView!

if touch?.view == self.diamondView{

//Do More....
}else{
//......
}

更新: ScrollView

如果您需要检测 ScrollView 的触摸,请使用UITapGestureRecognizer。通过 Storyboard拖放到 UIViewController 的 ,并将 scroll viewdelegategestureRecognizers 设置为 UITapGestureRecognizer。之后,只需为 UITapGestureRecognizer 创建操作,如下图所示。 enter image description here

以编程方式添加 UITapGesture :-

下面的代码也可以正常工作,无需像上面的屏幕截图那样进行操作。

@IBOutlet var scrollView: UIScrollView!

override func viewDidLoad() {
super.viewDidLoad()

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.actionTapOnScrollView(sender:)))
self.scrollView.addGestureRecognizer(tapGesture)


}

@objc private func actionTapOnScrollView(sender:UITapGestureRecognizer){
print("user Touched")
}

关于ios - 如何检测 iOS UIViewController 是否正在被交互或触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44870462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com