【问题标题】:iOS/Swift: How to implement longPressed action for backButton?iOS/Swift:如何实现后退按钮的长按动作?
【发布时间】:2015-12-07 15:48:41
【问题描述】:

我正在尝试为我的应用中的每个 ViewController 实现一个自定义后退按钮。我希望它有两个动作。如果按钮被点击,它应该会正常运行并进入导航堆栈。如果按钮按下时间更长,它应该转到预定义的 ViewController。

我怎样才能在 swift 中只为后退按钮实现这一点?

【问题讨论】:

标签: ios swift button uigesturerecognizer back


【解决方案1】:

您可以通过这种方式隐藏默认导航返回按钮并添加自定义按钮:

import UIKit

class SViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //hide your default back button
        navigationController!.setNavigationBarHidden(false, animated:true)

        //create a new button 
        var myBackButton:UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
        myBackButton.addTarget(self, action: "popToRoot:", forControlEvents: UIControlEvents.TouchUpInside)
        myBackButton.setTitle("Back", forState: UIControlState.Normal)
        myBackButton.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
        myBackButton.sizeToFit()

        //create a LongPressGestureRecognizer
        var longPressGesture = UILongPressGestureRecognizer(target: self, action: "longPressAction:")

        //add LongPressGestureRecognizer into button
        myBackButton.addGestureRecognizer(longPressGesture)

        var myCustomBackButtonItem:UIBarButtonItem = UIBarButtonItem(customView: myBackButton)
        self.navigationItem.leftBarButtonItem  = myCustomBackButtonItem

    }

    //this method will call when you tap on button.
    func popToRoot(sender:UIBarButtonItem){
        self.navigationController!.popToRootViewControllerAnimated(true)
    }

    //this method will call when you long press on button
    func longPressAction(gestureRecognizer:UIGestureRecognizer) {

        //initiate your specific viewController here.
        println("Long press detected")
    }

}

【讨论】:

  • 我应该在 longPressAction 中调用 pushViewController 吗?
  • .popToRootViewControllerAnimated() 转到我的第一个视图而不是先例视图..
  • 欢迎提出更详细的问题..:)
  • stackoverflow.com/q/32518980/5316757 如果需要,请查看我的新问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多