gpt4 book ai didi

ios - UITableViewCell 在响应者链中被跳过

转载 作者:技术小花猫 更新时间:2023-10-29 10:49:59 24 4
gpt4 key购买 nike

我正试图在 UITableViewCell 的 subview 中触发一个事件,让它在响应者链中冒泡并由自定义 UITableViewCell 子类处理。

基本上:

SomeView.m(它是 UITableViewCell 的 subview )

[self.button addTarget:nil action:@selector(someAction:) events:UIControlEventTouchUpInside]

SomeCustomCell.m

- (void)someAction:(id)sender {
NSLog(@"cool, the event bubbled up to the cell");
}

为了测试为什么这不起作用,我在 ViewController 上添加了 someAction: 方法,而 ViewController 是最终处理从 TableView 中冒出的事件的方法单元格 subview ,即使 Cell 应该处理它。我已经检查 Cell 是否在响应链上,并且我已经验证如果它们实现了 someAction: 方法,那么 cell 上方和下方的响应链上的任何 View 都会响应该事件。

这到底是怎么回事?

这是一个展示它的项目https://github.com/keithnorm/ResponderChainTest这是某种预期的行为吗?我没有找到任何文档说明 UITableViewCell 的处理方式与其他 UIResponder 的处理方式有何不同。

最佳答案

单元格似乎在请求其 TableView 的许可。要更改它,您当然可以覆盖

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
return [self respondsToSelector:action];
}

swift 3、4、5:

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return self.responds(to: action)
}

关于ios - UITableViewCell 在响应者链中被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326883/

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