2016-07-10 9 views
0

ボタンを押したときにスクリーンにアニメーション表示される2つのUIButtonがあります。しかし、私はボタンが押されていないと思うので、ボタンのターゲット関数のどちらも呼び出されません。画面上にボタンを作成するだけでボタンが機能するので、ボタンの外側から画面上にアニメートされているボタンに関連していると思います。オフスクリーンUIButtonアクションがトリガーされていません - iOS

編集:ボタンは画面上に正しくアニメーション表示され、表示されますが、押しても何も起こりません。

コード:

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") 
} 

すべてのヘルプは高く評価されます。ありがとう!

答えて

1

私はあなたのトランジションの目標を正確にはしていませんが、ボタンを保持しているビューが画面上に決して移動していないようです。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 
}) 

を行うことをお勧めしますこれは、あなたが全体として画面にボックスを移動しようとしているという仮定をオフに基づいています。

編集:

Ahh!私は何が起こっているのを見る!あなたはselfViewを動かしています。あなたはUIViewController.viewを動かすことは決してありません。ビューのコンテナを移動します。だから、self.viewを動かす代わりに、button_viewを動かす。 UIController.viewを移動すると、下のレイヤーとUIViewControllerの機能がすべて削除されます

+0

ボタンはアニメーションの後に表示されます。彼らのコンテナも画面上にあることを意味しないでしょうか? – Dando18

+0

表示されますがクリックできません。 – impression7vx

+0

ボタンが押されたときにボタンがハイライト表示されないようになっているため、フレームが無効になっているか、フレームが何らかの理由でオフラインになっていますが、デバッグと 'print'ステートメントは私にはありません。 – Dando18

関連する問題