首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS Swift检测键盘事件

iOS Swift检测键盘事件
EN

Stack Overflow用户
提问于 2017-04-04 14:26:42
回答 2查看 14.7K关注 0票数 10

我能以某种方式从iOS键盘检测事件吗?

我想在没有UITextField或任何类型的对象的UIViewController上检测此类事件。

我只有四个UIView的圆圈,当按下键盘上的按钮时,我想把它们画成不同的颜色。

EN

回答 2

Stack Overflow用户

发布于 2017-04-04 14:36:29

您没有任何对象来接受来自键盘的输入。要显示键盘,视图中必须有UITextField或UITextView对象。

但下面是在视图控制器中检测键盘事件的过程。您可以在视图控制器上为键盘通知设置观察者。

要在swift 3中注册键盘通知,请在视图控制器的viewDidLoad()或viewWillAppear()方法中编写以下代码行

代码语言:javascript
复制
    NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillShow(notification:)), name: .UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillHide(notification:)), name: .UIKeyboardWillHide, object: nil)

然后在视图控制器中实现两个方法keyBoardWillHide(:)和keyBoardWillShow(:)方法

代码语言:javascript
复制
    func keyBoardWillShow(notification: NSNotification) {
            //handle appearing of keyboard here
    }


    func keyBoardWillHide(notification: NSNotification) {
              //handle dismiss of keyboard here
     }
票数 14
EN

Stack Overflow用户

发布于 2017-04-04 14:46:39

您可以使用键盘处理程序创建自己的视图

代码语言:javascript
复制
//Example
class CustomKeyInput: UIControl, UIKeyInput{
    //UIKeyInput
    public var hasText: Bool { return false }
    public func insertText(_ text: String){
        print(#function)
        print(text)
        print(text.characters.count)
    }
    public func deleteBackward(){
        print(#function)
    }

    //UIControl
    override var canBecomeFirstResponder: Bool {return true}
}


//Usage
class ViewController: UIViewController {

    @IBOutlet weak var keyView: CustomKeyInput!

    override func viewDidAppear(_ animated: Bool) {
        keyView.becomeFirstResponder()
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43199794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档