UIButton在动态创建时不突出显示

时间:2014-01-01 07:38:45

标签: ios objective-c uibutton

我在表cellForRowAtIndexPath:方法中有一个动态创建的UIButton。它加载很好,可以选择它,但是当它被选中时它不会执行高亮动画。我尝试添加:

if(commandButton.isHighlighted),并且在选中时未触发。这是我加载单元格的方式:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString* CellIdentifier=@"CommandCell";
    UITableViewCell* commandCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    UIButton* commandButton = [[UIButton alloc]initWithFrame:commandCell.frame];
    [commandButton setTitle:@"Title" forState:UIControlStateNormal];
    [commandCell.contentView addSubview:commandButton];
    commandButton.backgroundColor = [UIColor blackColor];
    return commandCell;
}

每当我点击它时,commandButton都不会突出显示......

编辑:这是一个愚蠢的问题,我没有按住鼠标足够长的时间。对于那些有类似问题的人,只需在iOS模拟器中按下按钮更长时间。

4 个答案:

答案 0 :(得分:1)

这可以帮助您将波纹管代码添加到您的代码

如果你想在tuchupinside那么一些图像然后在代码下面。

[commandButton setBackgroundImage:/*add you image using UIImage*/forState: UIControlStateHighlighted];

如果你想要简单(默认背景颜色出现在tuchupinside上的按钮中)。

UIButton *buttonTap=[UIButton buttonWithType:UIButtonTypeRoundedRect];

并像这样设置框架

buttonTap.frame=commandCell.frame;
//make some adjustment as per requied.

如果你想要一些模糊类型效果(半部分选择) 然后你去

UIButtonTypeCustom //type

答案 1 :(得分:1)

您在以下行中创建的UIButton

UIButton* commandButton = [[UIButton alloc]initWithFrame:commandCell.frame];
默认情况下,

自定义样式UIButton。对于此按钮,您必须手动设置所有属性 。你想要的是这个:

UIButton *commandButton = [UIButton buttonWithType:UIButtonTypeSystem];
[commandButton setFrame:cell.frame];

UIButtonTypeSystem包含您要查找的样式。

希望这有帮助!

答案 2 :(得分:0)

我不知道在哪里用这个?但我的建议仍然是给按钮添加标签,如果你将它添加到单元格中,如:

UIButton* commandButton = [[UIButton alloc]initWithFrame:commandCell.frame];
[commandButton setTitle:@"Title" forState:UIControlStateNormal];
commandButton.tag = 1;
[commandCell addSubview:commandButton];
commandButton.backgroundColor = [UIColor blackColor];

并且在访问同一个按钮时;

//你必须得到单击按钮的单元格

   UIButton *button =(UIButton *)[cell viewWithTag:1];

在此按钮上您可以使用:

if(commandButton.isHighlighted)

答案 3 :(得分:0)

在向细胞视图添加按钮之前,请尝试添加:

NSArray * views = [commandCell.contentView subviews];
for (UIView *object in views) {
    [object removeFromSuperview ];
}

因为可能你在另一个上有多个单元格,所以实际点击按钮是“最底部单元格视图”按钮。