1

我创建了一个包含自定义单元格的表格视图(我已经子类化了UITableViewCell)。
我正在其中创建几个UIButtons。在 .h 文件中声明:

@property (nonatomic, strong) UIButton *myButton;

这在 .m 文件中:

myButton = [[UIButton alloc] initWithFrame:CGRectMake(-100.0, 285.0, 60.0, 30.0)];
myButton.titleLabel.font = [UIFont boldSystemFontOfSize:16.0];
myButton.backgroundColor = [UIColor clearColor];
[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[myButton setTitle:@"text" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.contentView addSubview:myButton];

我正在使用将单元格向右移动UIPanGestureRecognizer,然后UIButton显示(注意它位于负 X 索引中)。
我可以看到它,但它不可点击(我猜它不再出现在视图中)。
关于如何使其可点击的任何建议?

更多细节:
在单元格的初始化中,我正在做:

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
panGesture.delegate = self;
[self.contentView addGestureRecognizer:panGesture];

然后我实现了手势:

-(void)handlePanGesture:(UIPanGestureRecognizer *)sender {
    CGPoint translate = [sender translationInView:self.contentView];
    CGRect currentFrame = self.contentView.frame;
switch ([sender state]) {        
    case UIGestureRecognizerStateChanged:

        currentFrame.origin.x = translate.x;
        self.contentView.frame = currentFrame;

        break;
    default:
        break;
}    
}

当框架向右移动时 - 显示按钮。但是不能点击...

4

1 回答 1

4

如果按钮的框架在其父框架的框架之外,它将不会注册触摸。在这种情况下,您提到您的按钮在其框架的 x 位置设置为 -100 时停止工作。这是有道理的,因为它在触摸区域之外。

您实现的平移手势移动了单元格的视图,因此虽然按钮可能出现在屏幕上,但它仍然位于单元格视图的外部,因此它无法接收触摸。

解决此问题的一个可能建议是从一开始就使您的细胞更大。例如,如果单元格的帧大小当前为 0,0,320,44,您可以改为 -100,0,420,44 并相应地放置单元格的内容。现在,您的按钮框架将更改为 0,0,x,y 并且它将位于单元格的视图内并且能够接收触摸。

于 2012-09-10T15:21:56.163 回答