如何拦截swift iOS应用程序的关键事件?

Posted

技术标签:

【中文标题】如何拦截swift iOS应用程序的关键事件?【英文标题】:how to intercept key event of swift iOS app? 【发布时间】:2016-12-17 09:28:04 【问题描述】:

我删除了AppDelegate.swift中的@UIApplicationMain并写了main.swift如下,但程序仍然无法触发keyPressed函数。但是每次按键都会执行print("send event2")

如何触发keyPressed函数?这个程序有问题吗?

import UIKit
import Foundation

class TApplication: UIApplication 
    override func sendEvent(_ event: UIEvent!) 
       super.sendEvent(event)
    

    override var keyCommands: [UIKeyCommand]? 
      print("send event2") // this is an example
        return [
            UIKeyCommand(input: "1", modifierFlags: [], action: Selector(("keyPressed:")), discoverabilityTitle: “1”),
            UIKeyCommand(input: "2", modifierFlags: .shift, action: Selector("keyPressed:"), discoverabilityTitle: “2”)]
        ]
    

    func keyPressed(sender: UIKeyCommand) 
        print("keypressed event !!!!!!!!") // this is an example
    

【问题讨论】:

【参考方案1】:

我将'selector'修改为#selector(swift 3),终于解决了问题,可能有bug

【讨论】:

" action: #selector(keyPressed(sender:)) " 而不是 "action: Selector(("keyPressed:"))" 你甚至可以像#selector(keyPressed)这样省略参数定义,但请确保在func keyPressed(sender: UIKeyCommand // ... 之前添加@objc

以上是关于如何拦截swift iOS应用程序的关键事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Google Calendar API iOS Swift 创建事件

如何使用 Swift 在 iOS 中检测多行键盘粘贴事件?

如何检索当前接收关键事件的 OSX 应用程序

使用 Swift 在 iOS 中远程控制事件

如何使用 Swift 检测 iOS 应用程序何时出现在前台? [复制]

iOS Swift:如何为 Swift 3 进行异步/反应式/事件编程