繁体   English   中英

屏幕外UIButton操作未触发-iOS

[英]Offscreen UIButton action not triggered - iOS

我有两个在屏幕外创建的UIButton ,当按下按钮时会在屏幕上显示动画。 但是,从未调用过按钮的两个目标函数,因为我相信这些按钮不会被“按下”。 如果我只是在屏幕上创建按钮,这些按钮就可以工作,因此我认为问题与从屏幕边界之外将按钮动画化到屏幕上有关。

编辑:按钮确实可以在屏幕上进行动画处理,并且是可见的,但是按下按钮则无济于事。

码:

var isMenuOpen : Bool = false
var button_height : CGFloat = UIScreen.mainScreen().bounds.height/8

var button_view : UIView!
var mylists : UIButton!
var settings : UIButton!

@IBAction func openMenu(sender: AnyObject) {
    UIView.animateWithDuration(0.6, delay: 0.0, options: .CurveEaseOut, animations: {
        self.view.transform = CGAffineTransformMakeTranslation(0.0, self.button_height * (self.isMenuOpen ? 0 : -1))
    }, completion: {finished in
        self.isMenuOpen = !self.isMenuOpen
    })

}

override func viewDidLoad() {
    super.viewDidLoad()
    initButtons()  
}

func initButtons() {
    button_view = UIView(frame: CGRect(x:0.0, y:UIScreen.mainScreen().bounds.height, width:UIScreen.mainScreen().bounds.width, height:button_height))
    button_view.userInteractionEnabled = true

    mylists = UIButton(frame: CGRect(x:0.0, y:0.0, width:UIScreen.mainScreen().bounds.width/2.0, height:button_height))
    mylists.setTitle("My Lists", forState: .Normal)
    mylists.backgroundColor = UIColor(red: 255/255, green: 105/255, blue: 180/255, alpha: 1.0)
    mylists.addTarget(self, action: #selector(showLists(_:)), forControlEvents: .TouchUpInside)
    button_view.addSubview(mylists)

    settings = UIButton(frame: CGRect(x:UIScreen.mainScreen().bounds.width/2.0, y:0.0, width:UIScreen.mainScreen().bounds.width/2.0, height:button_height))
    settings.setTitle("Settings", forState: .Normal)
    settings.backgroundColor = UIColor(red: 135/255, green: 205/255, blue: 236/255, alpha: 1.0)
    settings.addTarget(self, action: #selector(showSettings(_:)), forControlEvents: .TouchUpInside)
    button_view.addSubview(settings)

    self.view.addSubview(button_view)
}

func showLists(sender: UIButton!) {
    print("showLists")
}

func showSettings(sender: UIButton!) {
    print("showSettings")
}

任何帮助表示赞赏。 谢谢!

我不是您过渡的确切目标,但是看起来按住按钮button_view的视图永远不会过渡到屏幕上。

您是要使每个按钮进入屏幕,还是要使两个按钮都进入容器内的屏幕( button_view_ )? 如果您想同时做这两个,我建议您同时做

UIView.animateWithDuration(0.6, delay: 0.0, options: .CurveEaseOut, animations: {
    self.button_view.transform = CGAffineTransformMakeTranslation(0.0, -1*(UIScreen.mainScreen().bounds.height))
}, completion: {finished in
    self.isMenuOpen = !self.isMenuOpen
})

这是基于您试图将框整体移至屏幕的假设。

编辑:

啊! 我知道发生了什么! 因此,您要将self.view向上移动,而您永远不想移动UIViewController.view。 移动视图的容器。 因此,不要移动self.view,而是移动button_view。 移动UIController.view会删除UIViewController的所有底层和功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM