【问题标题】:Detect delete key using UIKeyCommand使用 UIKeyCommand 检测删除键
【发布时间】:2014-03-30 20:52:59
【问题描述】:

有人知道如何在 iOS 7 上使用 UIKeyCommand 检测“删除”键吗?

【问题讨论】:

    标签: ios cocoa uikeycommand


    【解决方案1】:

    当人们在使用 Swift 时遇到问题时,我认为在 Objective C 和 Swift 中的一个小而完整的示例可能是一个很好的答案。

    请注意,Swift 没有用于退格的\b 转义字符,因此您需要使用简单的 Unicode 标量值转义序列 \u{8}。这映射到相同的老式ASCII control character 数字 8(“control-H”,或 caret notation 中的 ^H)用于退格,就像 \b 在 Objective C 中所做的那样。

    这是一个捕获退格的 Objective C 视图控制器实现:

    #import "ViewController.h"
    
    @implementation ViewController
    
    // The View Controller must be able to become a first responder to register
    // key presses.
    - (BOOL)canBecomeFirstResponder {
        return YES;
    }
    
    - (NSArray *)keyCommands {
        return @[
            [UIKeyCommand keyCommandWithInput:@"\b" modifierFlags:0 action:@selector(backspacePressed)]
        ];
    }
    
    - (void)backspacePressed {
        NSLog(@"Backspace key was pressed");
    }
    
    @end
    

    这是 Swift 中等效的视图控制器:

    import UIKit
    
    class ViewController: UIViewController {
    
        override var canBecomeFirstResponder: Bool {
            return true;
        }
    
        override var keyCommands: [UIKeyCommand]? {
            return [
                UIKeyCommand(input: "\u{8}", modifierFlags: [], action: #selector(backspacePressed))
            ]
        }
    
        @objc func backspacePressed() {
            NSLog("Backspace key was pressed")
        }
    
    }
    

    【讨论】:

    • 类型 'UIKeyModifierFlags' 没有成员 'allZeros'
    • @purefusion 我现在更新了代码以使用最新版本的 Swift。主要区别:canBecomeFirstResponderkeyCommands 现在是被覆盖的属性,而不是方法,modifierFlags 现在是 OptionSet,因此如果没有修饰符,您可以传递一个空集而不是使用 allZeros kludge,我'正在使用新的#selector 语法。经测试,可使用外接键盘正常工作。
    【解决方案2】:

    真的很简单——需要寻找退格符“\b”

    【讨论】:

    • 这对我不起作用。它指出“无效的转义序列”。所以我将其更改为"\\b",但这会导致在 Mac 键盘上点击“删除”时不会调用该方法。 UIKeyCommand(input: "\\b", modifierFlags: nil, action: "methodToCall:")
    • 我找到了。在 Swift 中使用“\\”。
    • @Joey 尝试使用\u{08} 而不是\\b
    【解决方案3】:

    【讨论】:

    • 实现UIKeyInput 会在成为第一响应者时提供一个键盘。
    猜你喜欢
    • 2014-01-28
    • 1970-01-01
    • 2021-04-04
    • 2016-09-18
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2012-08-18
    • 2017-03-08
    相关资源
    最近更新 更多