如何点击标签栏上的其中一个按钮并让该交互提示键盘,准备输入搜索栏之类的输入空间?我正在使用swift。我无法在任何地方找到相关信息。
答案 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()
}
希望这会有所帮助 祝你一切顺利。