簡體   English   中英

在iOS自定義鍵盤上隱藏鍵盤快捷鍵欄

[英]Hide KeyBoard Shortcuts Bar on a iOS Custom Keyboard

我正在嘗試構建可在許多應用程序中通用的自定義鍵盤。 我想隱藏“鍵盤快捷鍵”欄,但是我很難做到這一點。 到目前為止,我在論壇上看到的所有帖子都是通過inputAssistantItem.leadingBarButtonGroups.removeAll()使用inputAssistantItem.leadingBarButtonGroups.removeAll()inputAssistantItem.leadingBarButtonGroups = []

但是,由於我想一般使用它而不是在自己的應用程序中使用,因此我無法訪問文本字段。

我正在嘗試將其與如下所示的視圖一起使用,但顯然無法正常工作。 我已經嘗試了很多變化,以至於我完全感到困惑。

這是我的代碼片段:

import UIKit

class KeyboardViewController: UIInputViewController {
    @IBOutlet var nextKeyboardButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        let nib = UINib(nibName: "golfview", bundle: nil)
        let objects = nib.instantiate(withOwner: self, options: nil)
        view = objects[0] as! UIView;

        //get rid of top bar of keyboard
        view.inputAssistantItem.leadingBarButtonGroups = []
        view.inputAssistantItem.trailingBarButtonGroups = []

為自定義視圖創建自定義輸入視圖

做法:

  • 創建綠色輸入視圖
  • 創建紅色視圖
  • 當紅色視圖成為第一響應者時,綠色視圖應顯示

碼:

綠色輸入視圖:

import UIKit

class GreenInputView : UIView {

    //MARK: Initializers

    override init(frame: CGRect) {
        super.init(frame: frame)

        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        setup()
    }

    //MARK: Setup

    private func setup() {

        backgroundColor = .green

        heightAnchor.constraint(equalToConstant: 200).isActive = true
    }
}

紅色視圖:

import UIKit

class RedView : UIView {

    private let greenInputView = GreenInputView()

    //MARK: Initializers

    override init(frame: CGRect) {
        super.init(frame: frame)

        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        setup()
    }

    //MARK: Setup

    private func setup() {

        setupBase()
        setupGreenInputView()
    }

    private func setupBase() {

        backgroundColor = .red
    }

    private func setupGreenInputView() {
        greenInputView.translatesAutoresizingMaskIntoConstraints = false
    }

    override var canBecomeFirstResponder: Bool {
        return true
    }

    override var inputView: UIView? {
        return greenInputView
    }
}

視圖控制器:

import UIKit

class ViewController: UIViewController {

    private let redView = RedView()

    override func viewDidLoad() {
        super.viewDidLoad()

        setupRedView()
    }

    private func setupRedView() {

        view.addSubview(redView)

        redView.translatesAutoresizingMaskIntoConstraints = false

        redView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        redView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        redView.widthAnchor.constraint(equalToConstant: 100).isActive = true
        redView.heightAnchor.constraint(equalToConstant: 100).isActive = true
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        redView.becomeFirstResponder()
    }
}

截圖:

綠色輸入視圖的屏幕截圖

暫無
暫無

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

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