2017-11-04 120 views
0

我添加了一个子视图,像这样:子视图经过润色子视图下它

func showPlayerView2() { 
    self.view.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height - 56) 
    //let theView = myView 
    let theView = PlayerView() 
    theView.willMove(toParentViewController: self.navigationController) 
    self.navigationController?.addChildViewController(theView) 
    theView.view.isUserInteractionEnabled = true 
    theView.playPauseButton.isUserInteractionEnabled = true 
    self.navigationController?.view.bringSubview(toFront: theView.view) 
    self.navigationController?.view.addSubview(theView.view) 
    theView.view.frame = CGRect(x: 0, y: self.view.frame.maxY, width: 375, height: 56) 

    theView.didMove(toParentViewController: self.navigationController) 
    self.view.layoutSubviews() 
} 

PlayerView有应该按下时打印的东西到屏幕上的按钮。

即使在将isUserInteractionEnabled设置为true之后,它仍然不会注册触摸并将它们传递到它下面的视图。我已经看过几乎所有关于这个问题的SO问题,而且没有任何答案有效。我能做些什么来解决这个问题?

+0

你们是不是要触摸手势添加到您的看法?另外,你可以分享一个屏幕截图以获取更多信息。 – Glenn

+0

操作导航控制器的子视图控制器,视图和子视图是完全非法的。很难对你在做这件事时可能遇到的任何问题表示同情。这段代码的目的是什么? – matt

+0

我想添加一个子视图到导航控制器上的所有屏幕上的屏幕上, –

回答

0

试试这个代码,如果你想找一个共同的自定义导航菜单

func setupPageNavigationBar(){ 
     navigationController?.navigationBar.barTintColor = UIColor(red:1.00, green:0.22, blue:0.22, alpha:1.0) 
     navigationController?.navigationBar.translucent = false 

     let backButton = UIButton(type:.System) 
     backButton.setImage(UIImage(named: "img_back")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal) 
     backButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30) 

     let imgButton = UIButton(type:.System) 
     imgButton.setImage(UIImage(named: "img_logo_bar")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal) 
     imgButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40) 


     navigationItem.leftBarButtonItems = [UIBarButtonItem(customView: backButton),UIBarButtonItem(customView:imgButton)] 
     backButton.addTarget(self, action: #selector(self.goBack), forControlEvents: .TouchUpInside) 

     let titleLabel = UILabel() 
     titleLabel.text = "SOME TITLE" 
     let titleLabel2 = UILabel() 
     titleLabel2.text = "Some text" 

     titleLabel.font = UIFont.boldSystemFontOfSize(15) 
     titleLabel.textColor = UIColor.whiteColor() 
     titleLabel.textAlignment = .Left 

     titleLabel2.font = UIFont.systemFontOfSize(11) 
     titleLabel2.textColor = UIColor.whiteColor() 
     titleLabel2.textAlignment = .Left 

     let titleView = UIView() 
     titleView.frame = CGRect(x: 0, y: 0, width: view.frame.width-90, height: 50) 
     //titleView.backgroundColor = UIColor.whiteColor() 

     titleView.addSubview(titleLabel) 
     titleLabel.translatesAutoresizingMaskIntoConstraints = false 

     titleView.addSubview(titleLabel2) 
     titleLabel2.translatesAutoresizingMaskIntoConstraints = false 


     //titleLabel.frame = CGRect(x: 0, y: 0, width: 134, height: 34) 


     let viewDict = ["titleLabel":titleLabel,"titleLabel2":titleLabel2] 

     titleView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[titleLabel]-0-|", options: NSLayoutFormatOptions(), metrics: nil, views: viewDict)) 
     titleView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[titleLabel2]-0-|", options: NSLayoutFormatOptions(), metrics: nil, views: viewDict)) 

     titleView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-5-[titleLabel(20)]-0-[titleLabel2(15)]", options: NSLayoutFormatOptions(), metrics: nil, views: viewDict)) 

     //5+20+5+15+5 
     navigationItem.titleView = titleView 

     let homeButton = UIButton(type:.System) 
     homeButton.setImage(UIImage(named: "img_home")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal) 
     homeButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30) 
     navigationItem.rightBarButtonItem = UIBarButtonItem(customView: homeButton) 
     homeButton.addTarget(self, action: #selector(self.gotoHome), forControlEvents: .TouchUpInside) 
     //CGRectMake() 



    } 

并在viewControllers

override func viewDidLayoutSubviews() 
    { 

     self.setupPageNavigationBar() 
    }