gpt4 book ai didi

iphone - 遍历响应者链以传递自定义事件。这是错误的吗?

转载 作者:IT王子 更新时间:2023-10-29 08:11:01 24 4
gpt4 key购买 nike

根据 iOS 文档,响应链用于将触摸事件“向上传递”。它还用于控件生成的操作。很好。

我真正想做的是“向上链”发送一个自定义 事件。第一个接听事件的响应者将处理它。这似乎是一种很常见的模式,但我找不到任何关于如何以“iOS/Cocoa 方式”做到这一点的好的解释。

由于响应者链正是我所需要的,所以我想出了这样的解决方案:

// some event happened in my view that 
// I want to turn into a custom event and pass it "up":

UIResponder *responder = [self nextResponder];

while (responder) {

if ([responder conformsToProtocol:@protocol(ItemSelectedDelegate)]) {
[responder itemSelected:someItem];
break;
}

responder = [responder nextResponder];
}

这非常有效,但我觉得应该有其他方法来处理这个问题。以这种方式手动走链似乎不太...很好。

注意这里通知不是一个好的解决方案,因为我只希望 View 层次结构中的对象被涉及,而通知是全局的。

在 iOS(以及 Cocoa 中)处理这个问题的最佳方式是什么?

编辑:

我想完成什么?

我有一个 View Controller ,它有一个 View ,它有 subview 等...几个 subview 是特定类型的,显示数据库中的项目。当用户点击这个 View 时,应该向 Controller 发送一个信号以导航到该项目的详细信息页面。

处理点击的 View 在 View 层次结构中比主视图低几层。我必须告诉 Controller (或者在某些情况下“向上链”的特定 subview )一个项目被选中。

收听通知是一种选择,但我不喜欢这种解决方案,因为选择项目不是全局事件。它严格绑定(bind)到当前 View Controller 。

最佳答案

UIApplication has a method for just this purpose , its Cocoa cousin 也是如此.您可以用一条消息替换问题中的所有代码。

关于iphone - 遍历响应者链以传递自定义事件。这是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863755/

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