我创建了一个包含自定义单元格的tableview(我已经子类化了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;
}
}
当框架向右移动时 - 显示按钮。但不是可点击的......
答案 0 :(得分:4)
如果按钮的框架在其父框架的框架之外,它将不会注册触摸。在这种情况下,您提到当按钮的x位置设置为-100时,按钮停止工作。这是有道理的,因为它在触摸区域之外。
您实施的平移手势会移动单元格的视图,因此当按钮可能出现在屏幕上时,它仍然位于单元格视图的外部,因此无法接收触摸。
解决此问题的一个可能建议是从一开始就让你的细胞更大。因此,例如,如果单元格的帧大小当前为0,0,320,44,则可以将其设置为-100,0,420,44并相应地放置单元格的内容。现在,您的按钮的框架将变为0,0,x,y,它将位于单元格的视图内,并且能够接收触摸。