首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >背景视图控制器响应触摸事件?

背景视图控制器响应触摸事件?
EN

Stack Overflow用户
提问于 2017-03-30 04:57:49
回答 1查看 341关注 0票数 2

我有一个主视图控制器,它覆盖touchesBegan,并在点击某个屏幕位置时播放声音。我有一个从这个视图控制器到另一个视图控制器的segue,我的自定义设置视图控制器。然而,当我滑动我的手指在这个新的,背景视图控制器仍然响应我的触摸,因为一个声音仍在播放。

我没有实现导航控制器,而且似乎其他segue类型在后台响应触摸事件时也有同样的问题。第一个视图控制器不应该在完成任务后不响应这些操作吗?或者,如果我误解了,在后台VC中阻止触摸事件的正确方法是什么?

编辑:在第一个视图控制器中,当打印view.isUserInteractionEnabled时,尽管视图控制器在后台,我还是得到了true。不确定这是否相关。

编辑2: --我尝试添加一行,以准备segue重写self.view.isUserInteractionEnabled=false,但奇怪的是,只有在禁用设置视图控制器时,才会禁用触摸。

更奇怪的是:如果我在新的视图控制器中覆盖touchesBegan,它就会使原始视图控制器中的touchesMovedtouchesBegan方法保持沉默。但是,如果我只是在新控制器中重写touchesMoved,那么将调用两个视图控制器中的touchesMoved方法。

我读到,我们需要覆盖所有4个触摸处理程序,并调用超类方法,而我忘了这样做。但是,重写这两个类中的所有4个方法仍然会导致这个底层的触摸事件发生。

我也想坚持这个方法,而不是手势识别器。我想应该有个合适的方法来处理这个反应链吧?

这里有一个简单的复制方法:如果您创建了一个具有两个视图控制器A和B的简单项目,并且有一个按钮导致从A到B的segue,并在VC A中实现了touches方法(让我们在控制台上打印一些东西),那么即使在segue之后,也会发生完全相同的事情。VC A仍然在处理触摸事件。

EN

回答 1

Stack Overflow用户

发布于 2020-11-21 21:43:10

如果要防止对前一个视图的接触,请尝试将下一个视图显示为全屏。

代码语言:javascript
复制
let controller = segue.destination as! YourViewController
controller.modalPresentationStyle = .fullScreen
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43108871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档