动画按钮允许用户交互不起作用

时间:2015-12-15 17:45:40

标签: ios swift animation uibutton

我在NSObject类的代码中创建了一个UI按钮,它控制UIViewController类中的游戏。该按钮在游戏的大部分时间内都能正常工作,但在某个时刻,我希望按钮能够淡出/淡出。一旦fadein / out开始动画,按钮就不再是交互式的。我已经设置了.AllowUserInteraction选项,但仍然没有运气。我对此感到难过,所以任何帮助都非常感谢!

Class GameController: NSObject {
var gameView: UIView!
var nextButton: UIButton!

func gameViewSetUp() {
    // create the nextButton
    let imageNextButton = UIImage(named: "rightArrow") as UIImage?
    self.nextButton = UIButton(type: .Custom)
    nextButton.frame = CGRectMake(ScreenWidth-100,ScreenHeight-250,60,60)
    nextButton.setTitle("", forState: UIControlState.Normal)
    nextButton.setImage(imageNextButton, forState: .Normal)
    nextButton.contentMode = .ScaleAspectFill
    nextButton.backgroundColor = UIColor.clearColor()
    nextButton.layer.cornerRadius = 5.0
    nextButton.layer.borderWidth = 2.5
    nextButton.layer.borderColor = UIColor.clearColor().CGColor
    nextButton.addTarget(self, action: "nextPressed", forControlEvents: .TouchUpInside)
    nextButton.userInteractionEnabled = true
    gameView.addSubview(nextButton)

func playStageX() { 
       nextButtonWink()
    }
}

func nextButtonWink() {
    UIView.animateWithDuration(1.5, delay: 0, options: [.AllowUserInteraction, .Repeat, .CurveEaseInOut, .Autoreverse],
        animations: {
 // self.nextButton.userInteractionEnabled = true // I tried this as well but no impact.
            self.nextButton.alpha = 0
        }, completion: nil)
}

class GameViewController: UIViewController {
private var controller: GameController
required init?(coder aDecoder: NSCoder) {
    controller = GameController()
    super.init(coder: aDecoder)
}
override func viewDidLoad() {
    super.viewDidLoad()   
    let gameView = UIView(frame: CGRectMake(0, 0, ScreenWidth, ScreenHeight))
    self.view.addSubview(gameView)
    controller.gameView = gameView

}

2 个答案:

答案 0 :(得分:9)

取出self.nextButton.alpha = 0进行测试,我相信当alpha为零时按钮事件不会触发。当涉及到动画时,实际对象的alpha将在动画开始之前设置为零,而您所看到的就像是动画的渲染交互式屏幕截图

如果是这种情况,则需要将alpha设置为0.0100000003,或者将按钮覆盖为alpha 0处的交互式

答案 1 :(得分:3)

Swift 3 Xcode 8:

AllowUserAction现已弃用allowUserAction .... go figure

func nextButtonWink() {
UIView.animateWithDuration(1.5, delay: 0, options: [.allowUserInteraction,
    animations: {