gpt4 book ai didi

iphone - 当选择 UITableViewCell 时,防止自定义 AccessoryView 显示选择

转载 作者:行者123 更新时间:2023-12-03 20:26:19 26 4
gpt4 key购买 nike

要重现此问题,请创建一个 UITableView,其中包含具有自定义 AccessoryView 的单元格(例如用于执行特定操作的按钮,其中触摸 UITableViewCell 的其他部分应执行不同的操作)。

如果您触摸(选择)UITableView,AccessoryView 也会显示选择(就像被触摸一样)。我想防止这种情况发生,并且仅在实际触摸 AccessoryView 时显示 AccessoryView 的选定状态。

提前致谢,

帅气

最佳答案

当UIButton设置为UITableViewCell的accessoryView时,当选择其 super View (UITableViewCell)时,将调用accessoryView(本例中为UIButton)的setHighlighted。

为了解决这个问题,我们需要子类化 UIButton,重写其 setHighlighted setter 以忽略其父 View isSelected 或 isHighlighted。

AccessoryViewUIButton.m

#import "AccessoryViewUIButton.h"


@implementation AccessoryViewUIButton

// Subclass only works for buttonWithType:custom

- (id)initWithFrame:(CGRect)aRect
{
// Call the superclass's designated initializer
self = [super initWithFrame:aRect];

return self;
}

- (void)setHighlighted:(BOOL)isHighlighted {

/* Overridden to do nothing if superview is selected or highlighted */

UITableViewCell* theCell = (UITableViewCell*) self.superview;

if ([self.superview isKindOfClass:[UITableViewCell class]]) {
if ([theCell isSelected] || [theCell isHighlighted])
return;
}

[super setHighlighted:isHighlighted];
}

- (void)dealloc {
[super dealloc];
}


@end

关于iphone - 当选择 UITableViewCell 时,防止自定义 AccessoryView 显示选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520487/

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