您好我正在使用以下代码在我的应用中制作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]
的调用用来解决它。
为什么会发生这种情况以及解决问题的正确方法是什么? 谢谢!
答案 0 :(得分:0)
为了以不太标准的方式解决这个问题,我现在在进入第一个屏幕时将所有按钮的突出显示状态设置为no。我使用myButton.highlighted = NO;
。但是文档说明了highlighted
属性。
如果控件突出显示,请指定YES;否则没有。默认情况下,不突出显示控件。当跟踪期间触摸进入和退出以及触摸时,UIControl会自动自动设置和清除此状态。
在我的情况下它没有发生。我很想知道它背后的原因和解决它的标准方法