每次重置标题时,如何从 highlighting/flash 停止 UIButton?
How to stop UIButton from highlighting/flash each time its title is reset?
我使用 UIButton 作为标签在其标题中显示一些数字。每次调用该函数来重置此按钮的标题时,它都会闪烁。它不会影响功能,但会损害用户体验。我想知道是否有办法阻止 UIButton 的这种突出显示行为?
提前致谢!
编辑:以下是我只是调用委托方法 updateDigits
来刷新按钮标题的代码。
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate, DigitsEntryViewDelegate {
@IBOutlet weak var tipField1: UIButton!
@IBOutlet weak var tipField2: UIButton!
var buttonsArray = [UIButton]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tipField1.tag = 0
self.tipField2.tag = 1
self.tipField1.addTarget(self, action: "inputFieldClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.tipField2.addTarget(self, action: "inputFieldClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.buttonsArray.append(self.tipField1)
self.buttonsArray.append(self.tipField2)
}
func inputFieldClicked(sender: UIButton) {
let anchor: UIView = sender
let viewControllerForPopover = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("DigitEnter") as! DigitsEntryViewController
// set popover API values
viewControllerForPopover.currentDigitsString = sender.currentTitle
viewControllerForPopover.tagNumber = sender.tag
viewControllerForPopover.delegate = self
viewControllerForPopover.preferredContentSize = CGSizeMake(240, 320)
let popover = UIPopoverController(contentViewController:viewControllerForPopover)
popover.presentPopoverFromRect(anchor.frame, inView: anchor.superview!, permittedArrowDirections: UIPopoverArrowDirection.Down, animated: false)
}
func updateDigits(returnedDigits: String, tagNumber: Int) {
self.buttonsArray[tagNumber].setTitle(returnedDigits, forState: UIControlState.Normal)
}
}
这应该可以解决您的问题:
[UIView performWithoutAnimation:^{
[self.myButton setTitle:text forState:UIControlStateNormal];
[self.myButton layoutIfNeeded];
}];
尝试将按钮类型设置为自定义,而不是系统。
我可能记错了,但是闪烁看起来可能是数据传递延迟造成的;您正在尝试更改标题,而新标题仍在检索中,因此会出现闪光灯。
我会:
- 检索数据并将其存储在临时但专门创建的字符串中。
- 数据传递完成后,调用一个方法将按钮的文本更改为存储字符串的文本。
我使用 UIButton 作为标签在其标题中显示一些数字。每次调用该函数来重置此按钮的标题时,它都会闪烁。它不会影响功能,但会损害用户体验。我想知道是否有办法阻止 UIButton 的这种突出显示行为?
提前致谢!
编辑:以下是我只是调用委托方法 updateDigits
来刷新按钮标题的代码。
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate, DigitsEntryViewDelegate {
@IBOutlet weak var tipField1: UIButton!
@IBOutlet weak var tipField2: UIButton!
var buttonsArray = [UIButton]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tipField1.tag = 0
self.tipField2.tag = 1
self.tipField1.addTarget(self, action: "inputFieldClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.tipField2.addTarget(self, action: "inputFieldClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.buttonsArray.append(self.tipField1)
self.buttonsArray.append(self.tipField2)
}
func inputFieldClicked(sender: UIButton) {
let anchor: UIView = sender
let viewControllerForPopover = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("DigitEnter") as! DigitsEntryViewController
// set popover API values
viewControllerForPopover.currentDigitsString = sender.currentTitle
viewControllerForPopover.tagNumber = sender.tag
viewControllerForPopover.delegate = self
viewControllerForPopover.preferredContentSize = CGSizeMake(240, 320)
let popover = UIPopoverController(contentViewController:viewControllerForPopover)
popover.presentPopoverFromRect(anchor.frame, inView: anchor.superview!, permittedArrowDirections: UIPopoverArrowDirection.Down, animated: false)
}
func updateDigits(returnedDigits: String, tagNumber: Int) {
self.buttonsArray[tagNumber].setTitle(returnedDigits, forState: UIControlState.Normal)
}
}
这应该可以解决您的问题:
[UIView performWithoutAnimation:^{
[self.myButton setTitle:text forState:UIControlStateNormal];
[self.myButton layoutIfNeeded];
}];
尝试将按钮类型设置为自定义,而不是系统。
我可能记错了,但是闪烁看起来可能是数据传递延迟造成的;您正在尝试更改标题,而新标题仍在检索中,因此会出现闪光灯。
我会:
- 检索数据并将其存储在临时但专门创建的字符串中。
- 数据传递完成后,调用一个方法将按钮的文本更改为存储字符串的文本。