UIButton在触摸后保留发光

时间:2014-07-15 12:05:52

标签: ios objective-c ios7 uibutton

您好我正在使用以下代码在我的应用中制作customUIButtons。

+ (NSArray *) createButtonItemNormalImage:(UIImage *)normalImage
                       highlightImage:(UIImage *)highlightImage
                        disabledImage:(UIImage *)disabledImage
                      touchUpSelector:(SEL)selector
                               target:(id)target
{

 // HighlightImage is not used. Highlight is shown using iOS glow
UIButton *uiButton = [UIButton buttonWithType:UIButtonTypeCustom];
uiButton.bounds = CGRectMake(0,
                             0,
                             normalImage.size.width,
                             normalImage.size.height);
[uiButton setImage:normalImage
          forState:UIControlStateNormal];

if (disabledImage)
{
    [uiButton setImage:disabledImage
              forState:UIControlStateDisabled];
}
[uiButton addTarget:target
             action:selector
   forControlEvents:UIControlEventTouchUpInside];

uiButton.showsTouchWhenHighlighted = YES;

UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:uiButton];

return [NSArray arrayWithObjects:buttonItem, uiButton, nil];
}

我使用上述功能制作了取消按钮。取消按钮将用户从一个屏幕带到另一个屏幕。问题是当我回到第一个屏幕时,取消按钮仍在发光。我之前也看到过这个问题,但是[self.view setNeedsLayout]的调用用来解决它。

为什么会发生这种情况以及解决问题的正确方法是什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

为了以不太标准的方式解决这个问题,我现在在进入第一个屏幕时将所有按钮的突出显示状态设置为no。我使用myButton.highlighted = NO;。但是文档说明了highlighted属性。

  

如果控件突出显示,请指定YES;否则没有。默认情况下,不突出显示控件。当跟踪期间触摸进入和退出以及触摸时,UIControl会自动自动设置和清除此状态。

在我的情况下它没有发生。我很想知道它背后的原因和解决它的标准方法