如何禁用除最顶层视图之外的所有视图的触摸输入?

2023-11-21

我有一个包含多个子视图的视图。当用户点击子视图时,子视图的大小会扩大以覆盖大部分屏幕,但其他一些子视图在下面仍然可见。

当子视图之一像这样“展开”时,我希望我的应用程序忽略对其他子视图的触摸。有没有一种简单的方法可以实现这一目标?我可以编写代码来处理这个问题,但我希望有一种更简单的内置方法。


希望这有帮助...

[[yourSuperView subviews]
   makeObjectsPerformSelector:@selector(setUserInteractionEnabled:)
   withObject:[NSNumber numberWithBool:FALSE]];

这将禁用视图直接子视图的用户交互。然后将用户交互提供给您想要的唯一视图

yourTouchableView.setUserInteraction = TRUE;

EDIT:

在 iOS 中,似乎在父视图上禁用 userInteraction 并不会在其子视图上禁用 userInteraction 。所以上面的代码(我的意思是带有 makeObjectsPerformSelector:)只能用于禁用父视图的直接子视图的 userInteraction 。

请参阅用户 madewulf 的答案,该答案递归地获取所有子视图并禁用所有子视图的用户交互。或者,如果您需要在项目中的许多地方禁用此视图的 userInteraction,您可以对 UIView 进行分类以添加该功能..类似这样的事情就可以了..

@interface UIView (UserInteractionFeatures)
-(void)setRecursiveUserInteraction:(BOOL)value;
@end

@implementation UIView(UserInteractionFeatures)
-(void)setRecursiveUserInteraction:(BOOL)value{
    self.userInteractionEnabled =   value;
    for (UIView *view in [self subviews]) {
        [view setRecursiveUserInteraction:value];
    }
}
@end

现在你可以打电话

[yourSuperView setRecursiveUserInteraction:NO];

另外,用户 @lxt 建议在所有视图之上添加一个不可见视图,这是另一种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何禁用除最顶层视图之外的所有视图的触摸输入? 的相关文章

  • iOS swift 应用程序启动时出现黑屏

    我有个问题 当我启动我的应用程序时 会看到黑屏几秒钟 然后出现启动屏幕 我的启动画面不是默认的 我使用了视图控制器 因为我的启动画面有一个动画 我搜索了一个解决方案 我得到了这个 在我的闪屏加载 iPhone 之前出现黑屏 https st
  • Eddystone 信标检测问题

    以下是我使用 iPhone iOS 9 检测 Eddystone 的代码 void viewDidLoad super viewDidLoad if CLLocationManager locationServicesEnabled loc
  • 如何对 iPad 应用程序进行类转储?

    我正在尝试运行 iPad 应用程序的类转储来探索其架构 我使用 The Unarchiver 提取了 ipa 文件 并从 Payload 文件夹中对 app 文件运行了 class dump 但是 我收到此错误 Generated by c
  • 如何执行 UIAlertAction 的处理程序?

    我正在尝试编写一个帮助程序类以允许我们的应用程序支持两者UIAlertAction and UIAlertView 然而 当写alertView clickedButtonAtIndex 方法为UIAlertViewDelegate 我遇到
  • 如何使用 xcode 3.1.3 处理 iAd

    目前我正在集成 iAds 并制作该应用程序的精简版 我的问题是以前我使用的 iAds 是 xcode 4 1 3 但目前我使用的是 xcode 3 1 3 iAds 不支持我们所做的 请帮助我 NSString contentSize UI
  • Objective c:如何只删除目录下的所有文件但保留目录本身

    我发现下面的代码可以删除objective c中的文件 但我只想删除目录下的所有文件Caches并保留目录Caches itself 有人可以建议这样做的方法吗 Thanks NSFileManager filemgr filemgr NS
  • 搜索TableView无法选择行

    在搜索 tableView 时 每次我尝试选择一行时 它都会返回到未搜索的 tableView 我缺少什么 当不过滤表格时 segue 工作得很好 当搜索栏被激活时 选择行的能力就会消失 import UIKit import Founda
  • UINavigationControllerDelegate的didShowViewController方法被调用了两次

    class ViewController UIViewController UINavigationControllerDelegate override func viewDidLoad super viewDidLoad navigat
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • prepareForSegue 和代表

    我有一个有两个 segue 的应用程序 在其中一个 Segue 中 当前视图控制器成为委托 而另一个则不是 void prepareForSegue UIStoryboardSegue segue sender id sender if s
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • 如何更改 UISwitch 关闭状态的默认颜色?

    我想更改 UISwitch 中 onTintColor 的颜色以表示关闭状态 切换位于表格视图中 并且以编程方式进行切换 settingsSwitch setBackgroundColor UIColor whiteColor settin
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • cordova-plugin-whitelist 适用于 Android,但不适用于 iOS (Phonegap Build)

    我正在开发一个用 Cordova 封装并使用 Phonegap Build 构建的 JavaScript 应用程序 我们包括cordova plugin whitelist来自我们构建中的 npm 并添加了

随机推荐

  • Python 和 MS Word:将 .doc 转换为 .docx?

    我发现了几个与我的问题相似的问题 但没有一个答案接近我的需要 规格 我正在使用 Python 3 没有 MS Word 我的编程机运行的是 OS X 云机也是 linux ubuntu 我在用着python docx从a中提取值 doc每晚
  • dot / Graphviz 的更紧凑的层次布局

    I produce the following PDF with dot 我的主要问题是即使打印出来 字符尺寸也太小A3 此外 图表似乎还可以变得更紧凑 例如 左上角的蓝色 绿色和棕色节点的存在扩展了宽度 但我看不出为什么整个前两行不能向右
  • 如何在电报Python机器人中保存照片?

    我想写一个保存照片的电报机器人 这是我的代码 但它不起作用 我不知道我的问题是什么 def image handler bot update file bot getFile update message photo file id pri
  • Sprite Kit 和播放声音导致应用程序终止

    使用ARC 只是我遇到的一个问题 我有一个 SKScene 在其中使用 SKAction 类方法播放声音效果 SKAction playSoundFileNamed sound wav waitForCompletion NO 现在 当我尝
  • 在 Rails 3 中设置会话超时

    这看起来很简单 我试图让 Rails Active Record 会话在 2 分钟后超时 因此 两分钟后我希望我的用户必须重新登录 我只是在跑步rails server 即 WebBrick 在我的本地开发机器上 我知道这与以下代码有关co
  • 您可以使用异步函数通过 useState 设置初始状态吗

    我的组件依赖于本地状态 useState 但初始值应该来自http响应 我可以传递一个异步函数来设置初始状态吗 如何从响应中设置初始状态 这是我的代码 const fcads gt let good Axios get admin geta
  • 如何在Java中实现行级安全性?

    我目前正在评估身份验证 授权框架 Apache Shiro 看起来很好 但我是缺少行级安全性特征 例如 数据库中可能存在特殊行 这些行只能由具有特殊权限的用户可见和访问 为了避免不必要的往返 我们当前修改 SQL 查询以与我们的授权数据连接
  • 我可以更改 PyCharmProjects 的位置/名称吗?

    我在 Ubuntu 12 04 上使用 PyCharm 3 0 它自动创建了一个名为的文件夹 PyCharmProjects用于存储项目文件夹 是否有可能 更改此文件夹的位置 更改此文件夹的名称 我在界面 JetBrains 网站或设置文件
  • mPDF - 基于元素高度的分页符

    我在用着mpdf在 Laravel 和这个包4 0版本 问题是我有一个不同高度的问题列表 其中有 4 个选项 而且我不知道每个 div 标签的确切高度和近似高度 其中有哪些问题和答案选项 我不想要我的某些部分转到另一个页面的问题 我的问题的
  • html5shiv 无法在 IE8 中运行?

    我无法在 IE8 中使用 HTML5 元素获取样式 我已经搜索过 stackoverflow 和 Google 没有任何建议我尝试过工作 我从一个更复杂的页面开始 我正在将 XHTML 框架转换为 HTML5 并且没有丝毫担心 但是在模拟和
  • 在(c#)库中使用 List 与 LinkedList 的性能差异是什么[重复]

    这个问题在这里已经有答案了 可能的重复 什么时候应该使用 List 和 LinkedList 这个问题与我之前合并的问题有关 与列表与链表 如果我不希望对我的数据结构使用按索引访问 那么通过使用 LinkedList 而不是 List 可以
  • C++ 程序因 std::bad_alloc 而终止,但 valgrind 报告没有内存泄漏

    我的程序失败并显示 std bad alloc 错误消息 该程序是可扩展的 因此我使用 valgrind 在较小的版本上进行了测试 并且没有内存泄漏 这是统计力学的应用 所以我基本上制作了数百个对象 更改它们的内部数据 在本例中为双精度的
  • 应用程序池启动模式:OnDemand 与 AlwaysRunning,哪个最好?

    我的应用程序池一直使用 OnDemand 启动模式 但最近我听说 AlwaysRunning 模式 它允许部署到 IIS 的 ASP NET 应用程序在部署后立即可用 启用此功能似乎会导致 IIS 在应用程序部署后立即启动该应用程序 从而消
  • python:绑定如何工作

    我想了解 python 中的变量绑定到底是如何工作的 让我们看看这个 def foo x def bar print y return bar y 5 bar foo 2 bar 这打印 5 对我来说似乎是合理的 def foo x def
  • 从 url 安装 apk

    我正在尝试从 URL 安装 APK 这是我的代码 Intent promptInstall new Intent android content Intent ACTION VIEW promptInstall setFlags Inten
  • 通过命令行删除 PDF 注释

    有没有办法批量删除所有 PDF 注释 包括突出显示 注释 注释 箭头 例如 通过命令行 下列系列命令解决了我的问题 pdftk in pdf output uncompress sed Annots d pdftk output out p
  • 如何避免指针运算中的乘法?

    如果我写 int main int argc char argv int temp 50 3 return temp argc temp 0 并用 Visual C 编译它 我得到 009360D0 55 push ebp 009360D1
  • 用于验证 URL 的 JavaScript 正则表达式

    我正在使用以下正则表达式验证 URL 我想验证谷歌网站但它返回 false 可以在下面的 R E 中更改哪些内容来验证谷歌网站 console log learnRegExp http www google com 123 false co
  • 如何在gin中对路线进行分组?

    我想将我的路线分组在不同的文件中 这样主文件就不会很混乱 我想在他们自己的文件中添加类似的内容 v1 router Group v1 v1 Group users usersRoutes v1 Group pictures pictures
  • 如何禁用除最顶层视图之外的所有视图的触摸输入?

    我有一个包含多个子视图的视图 当用户点击子视图时 子视图的大小会扩大以覆盖大部分屏幕 但其他一些子视图在下面仍然可见 当子视图之一像这样 展开 时 我希望我的应用程序忽略对其他子视图的触摸 有没有一种简单的方法可以实现这一目标 我可以编写代