美文网首页
swift 实机测试时导航栏按钮失效

swift 实机测试时导航栏按钮失效

作者: 明朝_5193 | 来源:发表于2018-04-30 22:06 被阅读0次

使用UIBarButtonItem,点击事件无法触发。

原因是点击事件被UIGestureRecognizer 所覆盖,点击事件无法传递下去。

两种解决方式。

第一种:

设置cancelsTouchesInView属性。

cancelsTouchesInView默认为true,当属性为true时会只响应touch事件,该触摸也就不会继续在事件传递链传递下去。当设置为false时则不会终止事件传递,touch事件和点击事件都会触发。

let tapGestureRecognizer = UITapGestureRecognizer(target: self,

                                                          action: #selector(handleTapGesture))

tapGestureRecognizer.cancelsTouchesInView = false

self.view.addGestureRecognizer(tapGestureRecognizer)

//单击手势响应

    @objc func handleTapGesture() {

    print("测试")

       }

第二种:

手动生成按钮,指定点击方法

var navigationBar:UINavigationBar?

var titleTxt = "我的设备"

override func viewDidLoad() {

        super.viewDidLoad()

        self.navigationController?.isNavigationBarHidden=true

        //实例化导航条

        navigationBar = UINavigationBar(frame: CGRect(x:0, y:20,           width:self.view.frame.size.width, height:60))

        self.view.addSubview(navigationBar!)

        navigationBar?.pushItem(navItem(), animated: false)

        // Do any additional setup after loading the view.

    }

@objc func navItem() -> UINavigationItem{

        // 创建导航栏组件

        let navItem = UINavigationItem()

        //生成按钮,事件设置为点击后触发

        let rightButton = UIButton(type: UIButtonType.custom)

        rightButton.frame = CGRect(x: 0, y: 0, width: 33, height: 32)

        rightButton.addTarget(self, action: #selector(test_clicked(_:)), for: UIControlEvents.touchUpInside)

        let rightItem = UIBarButtonItem(customView: rightButton)

        // 自定义导航栏的title,用UILabel实现

        let titleLabel = UILabel(frame: CGRect(x:0,y:0,width:50,height:60))

       titleLabel.text = titleTxt

        // 设置自定义的title

        navItem.titleView = titleLabel

        navItem.setRightBarButton(rightItem, animated: true)

        return navItem

    }

@objc func test_clicked(_ sender: AnyObject) {

    print("测试")

}

相关文章

网友评论

      本文标题:swift 实机测试时导航栏按钮失效

      本文链接:https://www.haomeiwen.com/subject/tkzbkftx.html