如何在单击标签栏按钮后立即在输入空间上提示键盘?

时间:2017-04-20 18:51:20

标签: ios swift uitabbarcontroller

如何点击标签栏上的其中一个按钮并让该交互提示键盘,准备输入搜索栏之类的输入空间?我正在使用swift。我无法在任何地方找到相关信息。

2 个答案:

答案 0 :(得分:0)

您需要继承UITabBarController并覆盖func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)

这使您可以对正在点击的特定item做出反应。

然后,您可以在视图控制器中发送Notification或调用函数,然后调用textField.becomeFirstResponder()

我有一个应用程序可以对UITabBarItem类似于此的按下做出反应:

/// Enum cases must have the same name as the title of each tab bar item
enum MainTabBarItems: String {
  case tab1, tab2, tab3, tab4
}

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
  guard let itemTitle = item.title?.lowercased() else { return }
  guard let tappedItemIndex = MainTabBarItems(rawValue: itemTitle)?.hashValue else { return }

  if tappedItemIndex == selectedIndex {
    NotificationCenter.default.post(
      name: Constants.Notifications.tabBarItemTapped[tappedItemIndex],
      object: nil
    )
  }
}

Constants.Notifications.tabBarItemTapped是一个字符串数组,每个字符串对应于应用中的标签栏项目。

然后在视图控制器中我会:

NotificationCenter.default.addObserver(self, selector: #selector(tabBarItemWasTapped), name: Constants.Notifications.tabBarOneTapped, object: nil)

目标:

func tabBarItemWasTapped() {
  // react to the tab bar press
  textView.becomeFirstResponder()
}

答案 1 :(得分:0)

在ViewWillAppear或ViewDidAppear中将字段设置为firstFirstResponder。

@IBOutlet weak var textField: UITextField!

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    textField.becomeFirstResponder()
}

希望这会有所帮助 祝你一切顺利。