问题标签 [uiresponder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - UIGestureRecognizer 接收触摸但也将其转发给 UIControl
您将如何允许 aUIGestureRecognizer
接收UIView
触摸事件,同时确保另一个底层/覆盖UIView
也接收相同的触摸事件?
可以说我有以下视图层次结构:
视图 A(蓝色)和 B(红色)都是同一个父视图(灰色)的子视图。换句话说,他们都是兄弟姐妹,并且顺序决定他们中的哪一个覆盖另一个。
选项 1:视图 B(红色)有一个常规UIButton
作为其子视图。选项 2:视图 A(蓝色)有一个常规UIButton
作为其子视图。
为了便于解释,给定选项 1:视图 A(蓝色UITapGestureRecognizer
)附加了一个(或者甚至更多,其他 UIGestureRecognizers)。什么是最优雅的方法来确保UIButton
确实接收到其区域的所有触摸,但视图 A(蓝色)也接收到它的触摸UITapGestureRecognizer
?
如果可能的话,解决方案不应涉及扩展UIButton
-class 和手动转发按钮本身的任何事件。想象一下视图 B 将包含更多控件而不仅仅是一个按钮。所有这些控件都应该以某种方式允许视图 A 接收对其UIGestureRecognizer
.
我确实提供了两个选项,因为我不在乎这些视图(A 或 B)中的哪一个先出现,只要两者都收到触摸。
到目前为止,我所有的方法都突然走到了死胡同。也许自定义响应者链会是一个不错的解决方案?UIKit
我一直在想,整个//堆栈中必须有一个优雅的解决方案UIEvent
。UIResponder
iphone - UIResponder 和事件传递的另一个问题
我正在尝试实现一个 UIResponder 对象,该对象将允许我记录屏幕活动,然后将事件传递给下一个响应者以允许应用程序正常进行。我已经对此进行了一段时间的研究,并看到了两种可行的方法:创建根视图并忽略放置在其顶部的子视图中的触摸,允许根视图处理它们;或者创建一个添加到所有子视图的 GestureRecognizer。我的应用程序有多个视图在主窗口上交换进出。
我已经尝试了这两种方法并最终陷入了同样的僵局:我在我的视图(或识别器)中获得了 touchesBegan/touchesMoved/touchesEnded 事件,但是当我将它们发送到响应者链时没有任何反应。我已经尝试了以下所有方法。请注意,“view”是从 touch.view 派生的,view.superview 是我的“loginView”对象,其中包含被点击以将我带到此处的按钮:
这些都不起作用,实际上 '[[view nextResponder] hitTest...' 会产生警告。
我已经尝试了 resignFirstResponder,甚至打算尝试 sendAction,但此时我只是抓住了稻草。我尝试将我的观点放在链的底部和顶部并获得相同的结果。显然我错过了一些东西,但我看不到什么。
谁能告诉我下一步该尝试什么?
——山姆
objective-c - 触摸开始于 UITableViewController
我在我的 UITableViewController 子类中定义了这个方法:
但它没有被触发。UIViewController 是 UIResponder 的子类,所以它应该可以工作,对吧?谢谢
ios - 需要 UIResponder 链说明
在这种情况下,我无法让我UIButtons
的等工作:UIScrollViews
我有 base UIViewController
,它是UIWindow
. 在该层之上,我添加了一些其他UIViews
内容,我将其称为“中间层视图”。在顶部,我UIView
为覆盖对象添加了另一个。
中间层视图定期更改为不同的视图。UIView
它使用的来自一个,UIViewController
由一个 NIB 文件制作。这是一个例子
现在,当我触摸屏幕时,第一响应者显然是被触摸的theOverlayView
或 any 。触摸输入在视图链上上升,但似乎完全跳过了中间层视图等。它直接跳到根部。UIResponder
OverlayView
UIEvent
UIResponders
UIView
UIViewController
有谁知道这里发生了什么?
可以通过某种方式创建两个来解决UIEvents
吗?一个用于叠加视图,一个用于中间层视图?那可能吗?如果是这样,怎么做?
非常感激任何的帮助。谢谢,丰富
ios4 - UIResponder 问题
今晚我一直在与 UIResponder 战斗。这是我的困境。
如果我投入
到我的 mainViewController 然后我可以得到震动事件..
但是,这意味着当我调用邮件表单和 webviews 之类的东西时,键盘不会出现。
有什么方法可以让震动和键盘在模态视图中工作?
我试过添加 [self resignFirstResponder]; 在 -viewDidDissapear 中,当模式弹出时调用它,但没有运气。
干杯
ios - 我如何让 UIKeyInput 重复 deleteBackwards 调用
目前我正在使用 UIKeyinput 但即使我长时间按住删除键,它也只会发送一个 delteBackward 事件。当我长时间按住删除时,如何让它向我发送多个事件调用?
objective-c - 关于 Cocoa Touch 中单例的问题
我对 OOP 和设计模式还很陌生,但我之前实现过一次单例模式,以便在不同的 ViewController 之间传递静态数组和字符串对象。
我想知道是否有一种简单的方法可以让我的所有 ViewController 监听手势或事件,然后在所述手势/事件发生后执行一些代码。我正在考虑使用类的UIGestureRecognizer
对象或motionBegan
方法UIResponder
。
我已经通过创建一个新UIWindow
类、将代码放入其中并将类更改MainWindow.xib
为我的自定义类来完成这项工作。这行得通,是一个很好的解决方案,但我仍然想知道是否有实现此解决方案的非 IB 方式(例如,单例)
提前感谢您的指导。
示例代码非常感谢!
iphone - 响应链如何在 iPhone 中工作?什么是“下一个响应者”?
这就是文档所说的:
如果第一响应者 [对事件或动作消息] 无法处理事件或动作消息,它会将其转发给称为响应者链的链接系列中的“下一个响应者”。响应者链允许响应者对象将处理事件或动作消息的责任转移给应用程序中的其他对象。
如果响应者链中的对象无法处理事件或动作,它会将消息重新发送给链中的下一个响应者。消息沿着链向上传播,到达更高级别的对象,直到被处理。如果未处理,则应用程序将其丢弃。
好的,下一个响应者是什么?
是父视图吗?背后的风景?iOS 如何决定什么是第一响应者和第二响应者?
ios - 为什么 AppDelegate 继承自 UIResponder?
我注意到在 Xcode 4.2 beta 4 中使用 iPhone Master-Detail 模板创建新项目时,它会:
为什么AppDelegate
继承自UIResponder
而不是NSObject
?
iphone - 使用滑动手势关闭键盘(如在消息应用中)
当键盘显示在 iPhone 的消息应用程序上时,如果用户开始从消息表视图向下滑动并继续进入键盘区域,则键盘将开始关闭。如果他们在此过程中上下移动手指,键盘也会随之移动。
Apple 是否使用私有 API 来执行此操作,或者有没有办法通过(我认为)手势识别器来控制这样的键盘?