gpt4 book ai didi

objective-c - 当按钮是 UITableViewCell 内 View 的 subview 时,它在 UITableViewCell 子类中不起作用

转载 作者:太空狗 更新时间:2023-10-30 03:59:01 25 4
gpt4 key购买 nike

我在 tableView Cell 中有一个按钮,我需要它来响应触摸事件。通常这很容易解决

    [cell.playButton addTarget:self action:@selector(playButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

在 -tableView:cellForRowAtIndexPath 的内部:

我遇到的问题是我的按钮在自定义 UITableViewCell 子类中,也是我在该类中创建的 View 的 subview 。

例如:

    UIView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.theView = view;
[self addSubview:view];
[view release];


UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
playButton.frame = CGRectMake(5, 5, 100, 30);
[playButton setImage:[UIImage imageNamed:@"button_playvid.png"] forState:UIControlStateNormal];
[playButton setImage:[UIImage imageNamed:@"button_playvid_active.png"] forState:UIControlStateHighlighted];
self.playButton = playButton;
[self.theView addSubview:playButton];

当按钮是我在自定义 UITableViewCell 中创建的 View 的 subview 时,单元格会突出显示而不是按下按钮,因此我在 -tableView:cellForRowAtIndexPath 中设置的目标永远不会被调用。不知道为什么……有什么帮助吗?

谢谢,

乔尔

附言。我意识到创建一个完全像这样的背景 View 可能没有实际的理由,因为已经有一个。这只是我用来解释我遇到的问题的示例代码.. :D

感谢观看!

最佳答案

您添加的 UIView 实际上是一个 UIImageView。来自文档:

New image view objects are configured to disregard user events by default. If you want to handle events in a custom subclass of UIImageView, you must explicitly change the value of the userInteractionEnabled property to YES after initializing the object.

我认为要么 userInteractionEnabled 级联到 subview ,要么在这种情况下 super View 不会将触摸传递给它的 subview ,因此您的按钮将不会接收到触摸。将您的 ImageView 设置为具有 .userInteractionEnabled = YES 并且您应该没问题。

关于objective-c - 当按钮是 UITableViewCell 内 View 的 subview 时,它在 UITableViewCell 子类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272262/

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