簡體   English   中英

如何在按下NavigationBar時快速隱藏鍵盤

[英]How to hide keyboard in swift on press of navigationBar

我正在開發一個swift 3應用程序,該應用程序在每個頁面中都有一個導航欄。 導航欄的左側也有一個按鈕。 我需要在觸摸屏幕上的任何對象時辭職鍵盤。 我嘗試了平常的

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)

    }

但它適用於視圖的所有其他部分(導航欄除外)。 我嘗試添加以下代碼:

self.navigationController?.navigationBar.endEditing(true)

touchesBegan函數,但是沒有用,大概是因為我沒有導航控制器,我只是在情節提要中添加了搜索欄。

如何在導航欄(包括導航欄中的按鈕)上輕按以使鍵盤退出登錄?

這對我的應用程序很重要,因為如下所示,這是用戶可在不更改視圖的情況下輕按的最大空間。

在此處輸入圖片說明

我需要在黃色包圍的區域中進行辭職,包括箭頭所示的按鈕。

例如

override func viewDidLoad() {
    super.viewDidLoad()
 let hideKeyboard = UITapGestureRecognizer(target: self, action: #selector(self.navigationBarTap))
    hideKeyboard.numberOfTapsRequired = 1
    navigationController?.navigationBar.addGestureRecognizer(hideKeyboard)

     }

並以

 func navigationBarTap(_ recognizer: UIGestureRecognizer) {
    view.endEditing(true)
    // OR  USE  yourSearchBarName.endEditing(true)

}

在按鈕上調用MENU之前,請在按鈕操作內調用此行:

YourSearchOutlet.resignFirstResponder()

嘗試在導航欄上添加點擊手勢:

  override func viewDidLoad() {
        super.viewDidLoad()

        let navSingleTap = UITapGestureRecognizer.init(target: self, action: #selector(self.tap(_:)))
        navSingleTap.numberOfTapsRequired = 1
        self.navigationController?.navigationBar.subviews[1].isUserInteractionEnabled = true
        self.navigationController?.navigationBar.subviews[1].addGestureRecognizer(navSingleTap)
        }

    func tap() {
      //  do your work 
    }

子類化UINavigationBar並將其設置為情節提要中導航欄的自定義類。

//  NavigationBar.swift

import UIKit

class NavigationBar: UINavigationBar {

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.window?.endEditing(true)
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM