按钮在viewForRow中没有响应:
UIView * rowView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 44)] autorelease];
UIButton* deleteButton = [[[UIButton alloc]init]autorelease];
deleteButton.frame = CGRectMake(200, 10, 20,20);
[deleteButton setImage:[UIImage imageNamed:@"IconTrash.png"] forState: UIControlStateNormal];
[deleteButton addTarget: self action:@selector(removeCellAtIndexPath:) forControlEvents: UIControlEventTouchUpInside];
UILabel *labelText = [[UILabel alloc]init];
labelText.text = [NSString stringWithFormat:@"%@",[[localFlagNotes objectAtIndex:row] value]];
labelText.font = [UIFont fontWithName:@"Arial" size: 24];
labelText.frame = CGRectMake(0, 10, 200, 28);
labelText.backgroundColor = [UIColor clearColor];
[rowView addSubview:labelText];
[rowView addSubview:deleteButton];
[labelText release];
return rowView;
按下按钮后, removeCellAtIndexPath
不会调用。有没有人知道为什么和一些解决方案?
我认为按钮甚至没有按下只有细胞变得活跃。
答案 0 :(得分:0)
你的deleteButtonUr按钮的框架(宽度)超出了rowView的框架。所以增加了视图的框架,
UIView * rowView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 44)] autorelease];
否则在rowView的框架中调整标签和deleteButton的框架
答案 1 :(得分:0)
我找到方法。就在
- (UIView*)pickerView:(UIPickerView *)pickersView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
{
PickerCustomView * rowView = [[PickerCustomView alloc]initWithFrame:CGRectMake(5, 0, 310, 50) withText:[[localFlagNotes objectAtIndex:row] value]] ;
rowView.delegate = self;
return rowView;
}
使用按钮
创建自定义视图喜欢这个
- (id)initWithFrame:(CGRect)frame withText:(NSString*)text
{
self = [super initWithFrame:frame];
if (self)
{
deleteButton = [[UIButton alloc]init];
[deleteButton setImage:[UIImage imageNamed:@"IconTrash"] forState: UIControlStateNormal];
[deleteButton addTarget:self action:@selector(deleteButtonAction:) forControlEvents:UIControlEventTouchUpInside];
deleteButton.frame = CGRectMake(250, 10, 35,35);
textLabel = [[UILabel alloc]init];
originText = text;
NSString *trimmed = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
textLabel.text = trimmed;
textLabel.font = [UIFont fontWithName:@"Arial" size: 24];
textLabel.frame = CGRectMake(20, 10, 230, 28);
textLabel.backgroundColor = [UIColor clearColor];
[self addSubview:textLabel];
[self addSubview:deleteButton];
}
return self;
}
并使用:
-(void)deleteButtonAction:(id)sender
{
[delegate removeCellAtIndexPath:originText];
}
或者:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
if ( (location.x > 10 && location.x < 38) && (location.y > 240 && location.y < 265) )
{
[self deleteButtonAction:nil];
}
}