UIScrollview 与 UIButtons - 如何重新创建跳板?

2024-01-09

我正在尝试在我的应用程序中创建一个类似跳板的界面。我正在尝试使用添加到 UIScrollView 的 UIButtons。我遇到的问题是按钮没有将任何触摸传递给 UIScrollView - 如果我尝试轻弹/滑动并碰巧按下按钮,它不会注册 UIScrollView,但是如果我轻弹之间的空格按钮它就会起作用。如果我触摸按钮,它们就会点击/工作。

是否有属性或设置强制按钮将触摸事件发送到其父级(超级视图)?在添加 UIScrollView 之前是否需要将按钮添加到其他内容?

这是我的代码:

//init scrolling area
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 480, 480)];
scrollView.contentSize = CGSizeMake(480, 1000);
scrollView.bounces = NO;
scrollView.delaysContentTouches = NO;

//create background image
UIImageView *rowsBackground = [[UIImageView alloc] initWithImage:[self scaleAndRotateImage:[UIImage imageNamed:@"mylongbackground.png"]]];
rowsBackground.userInteractionEnabled = YES;

//create button
UIButton *btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
btn.frame = CGRectMake(100, 850, 150, 150);
btn.bounds = CGRectMake(0, 0, 150.0, 150.0);
[btn setImage:[self scaleAndRotateImage:[UIImage imageNamed:@"basicbutton.png"]] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];

//add "stuff" to scrolling area
[scrollView addSubview:rowsBackground];
[scrollView addSubview:btn];

//add scrolling area to cocos2d
//this is just a UIWindow
[[[Director sharedDirector] openGLView] addSubview:scrollView];

//mem-mgmt
[rowsBackground release];
[btn release];
[scrollView release];

对我有用的解决方案包括:

  1. Setting canCancelContentTouches in UIScrollView to YES.
  2. 延伸UIScrollView覆盖touchesShouldCancelInContentView:(UIView *)view回来YES when view is a UIButton.

根据文件touchesShouldCancelInContentView返回“YES取消进一步触摸消息以查看,NO以便查看继续接收这些消息。默认返回值为YES如果视图不是UIControl目的;否则,它返回NO."

Since UIButton is a UIControl需要扩展才能获得canCancelContentTouches使滚动生效。

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

UIScrollview 与 UIButtons - 如何重新创建跳板? 的相关文章

随机推荐

  • Java jar 文件未在 Linux 终端中运行

    我正在尝试运行 jar在 Linux 上的终端中输入文件但出现错误 root localhost dist java jar helloworld jar Exception in thread main java lang ClassFo
  • Java 线程与 Pthreads

    我今天在接受采访时被问到这个问题 当我们创建一个线程时pthread create POSIX 线程 线程自行启动 为什么我们需要显式调用start 在爪哇 当我们创建线程实例时 Java 不启动线程的原因是什么 我脑子一片空白 面试官时间
  • 在antlr中获取纯文本而不是令牌

    我正在尝试使用 antlr 创建一个解析器 我的语法如下 code codeBlock EOF codeBlock text tag1Ops tag2Ops tag1Ops START 1 TAG ID END 2 TAG tag2Ops
  • 为什么我们在使用类转换器时不应该使用enableImplicitConversion?

    The 类转换器文档 https github com typestack class transformer implicit type conversion say 隐式类型转换注意如果您将类验证器与类转换器一起使用 您可能不想启用此功
  • 将 C 字符串转换为 unsigned char 指针

    我正在使用许多字节编译低级代码 在某些情况下 使用双引号括起来的旧 C 字符串来定义对我来说很方便 但是 当使用 gcc 或 g 进行编译时 不知道其他编译器的行为 它一直困扰着我的指向字符串的符号 基本上当我写这个的时候 const un
  • 使用 FormBuilder 创建禁用的表单组

    假设我们有myFormGroup它是通过 FormBuilder 初始化的 this myFormGroup this fb group field1 SomeValidator1 field2 AnotherValidator2 fiel
  • 带有缓存存储的 Angular 5

    我尝试在 Angular 5 中使用 CacheStorage 的承诺 如文档中所示 let test caches open test test then result Cache gt result add test png 但我得到了
  • 帮助匹配两个类之间的字段

    我对 Java 还不太有经验 我希望有人能引导我走向正确的方向 因为现在我感觉我只是在用头撞墙 第一个类称为 MeasuredParams 它有 40 多个数字字段 身高 体重 腰围尺寸 手腕尺寸 一些是整数 但大部分是双精度型 第二类是统
  • 保存前受影响的 Mongoose _id

    var mongoose require mongoose mongoose connect mongodb localhost test var Cat mongoose model Cat name String var kitty n
  • Imagebutton 完整图像,圆角

    嗯 我的 Android 应用程序中有一些 ImageButtons 我希望他们展示完整的图片 我的意思是 我希望 ImageButton 只是图片 你知道吗 好吧 到目前为止 一切顺利 我可以使用 背景 属性来做到这一点 不过我也希望 I
  • 部署 Cloud Functions 后出现错误:无法刷新访问令牌。

    我已经用 Firebase Cloud Functions 进行了一段时间的实验 今天我对我的 index json 文件做了一个小小的更改 在要设置的文档中添加了一个字段 在 Firebase Console gt Functions g
  • 如何保持控件禁用直到线程结束

    我正在通过 GPS 调制解调器使用以下代码通过 comport 发送短信 Thread thread null private void btnsend Click object sender EventArgs e if thread n
  • Android:层次结构查看器不存在

    我在 Mac Sierra 上使用 Android Studio 2 3 打开设备监视器时找不到层次结构查看器 视角列表中没有查看者 有人知道这是为什么吗 无法评论 无代表 更新到最新的构建工具后 层次结构查看器和一堆其他东西已从工具目录中
  • MVC Ajax 更新面板

    我知道 至少我很确定 没有像 asp UpdatePanel 这样的 MVC 控件 谁能给我一些关于如何做到这一点的想法 我有一个集合 我从我的存储库和服务层添加条目 在我的主页中 我想根据此集合中是否有任何内容来显示警报 通常我会有一个
  • 使用 Bash 时哪些字符需要转义?

    Bash 中是否有需要转义的字符的完整列表 是否可以仅通过检查sed 特别是 我正在检查是否 是否需要逃避 我试过 echo h h sed s i g 并且工作得很好 没有逃脱 是不是意味着 不需要逃避吗 这是检查必要性的好方法吗 更一般
  • 在 Emacs + Slime + Clojure + Windows 设置中,无法加载 clojure-auto

    我跟着这个非常有用的指南 http dc clj fogus me index php title Installing Clojure and Slime on Windows设置此开发环境 当运行emacs bat我在 Emacs 中收
  • 我该如何处理<>f__AnonymousType0`2[System.Int32,System.String][]?

    我想访问从方法返回的列表 但我得到了错误 未捕获的类型错误 无法读取未定义的属性 长度 当我调试代码时 我在变量结果中得到了返回值 例如f AnonymousType0 2 System Int32 System String 那么如何处理
  • 如何运行 cURL 一次,循环检查域可用性?请帮助修复代码

    我所做的是域可用性检查 它连接到 API 并从 tmp 输出 可用 和不可用 下面的代码只会检查一次可用性 我想多次检查域的可用性 可能是循环 无需每次都重新启动 cURL 连接 因为这浪费时间 我只是不知道如何连接到 cURL 一次并运行
  • 正则表达式模式数字后跟一个字符

    我正在尝试让正则表达式适合以下场景 但遇到了一些麻烦 下面是场景 我的字符串看起来像这样 The office timing h is from 8h to 18h 从上面的字符串我需要 8h and 18h 到目前为止我已经做到了这一点
  • UIScrollview 与 UIButtons - 如何重新创建跳板?

    我正在尝试在我的应用程序中创建一个类似跳板的界面 我正在尝试使用添加到 UIScrollView 的 UIButtons 我遇到的问题是按钮没有将任何触摸传递给 UIScrollView 如果我尝试轻弹 滑动并碰巧按下按钮 它不会注册 UI