当前位置: 首页 > 面试题库 >

在UITextField中检测退格事件

温镜
2023-03-14
问题内容

我正在寻找有关如何捕获退格事件的解决方案,大多数堆栈溢出答案都在Objective-C中,但是我需要使用Swift语言。

首先,我为UITextField设置了委托,并将其设置为self

self.textField.delegate = self;

然后,我知道使用shouldChangeCharactersInRange委托方法来检测是否按下了退格键,因为所有代码都在Objective-
C中。我需要在Swift中使用以下方法。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
    int isBackSpace = strcmp(_char, "\b");

    if (isBackSpace == -8) {
        // NSLog(@"Backspace was pressed");
    }

    return YES;
}

问题答案:

斯威夫特4.2

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if let char = string.cString(using: String.Encoding.utf8) {
        let isBackSpace = strcmp(char, "\\b")
        if (isBackSpace == -92) {
            print("Backspace was pressed")
        }
    }
    return true
}

较早的Swift版本

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let  char = string.cStringUsingEncoding(NSUTF8StringEncoding)!
    let isBackSpace = strcmp(char, "\\b")

    if (isBackSpace == -92) {
        println("Backspace was pressed")
    }
    return true
}


 类似资料:
  • 我正在制作一个自定义文本字段(绘制文本而不是使用JTextField)。我可以输入字符,但退格只清除一个字符。如果我再写一些东西,我可以再次删除一个字符。我不知道为什么。 KeyListener: 聊天对象中的keyTyped()方法: 我正在绘制当前的文本字符串。

  • 在渲染器进程中,使用标准HTML5 API实现在线和离线事件检测,例子: main.js 1 const {app, BrowserWindow} = require('electron') 2 ​ 3 let onlineStatusWindow 4 ​ 5 app.on('ready', () => { 6 onlineStatusWindow = new BrowserWindow({ wi

  • 问题内容: 我想在输入时立即在WebView中打印HTML文本区域的内容。 PS:出于某种原因,我尝试听的,但它不起作用。 问题答案: 如果尝试将JavaFX TextArea对象的内容打印到WebView中,则应将侦听器添加到TextArea而不是WebView。 如果尝试在WebView的HTML页面内的HTML TextArea标记中侦听事件,则应将侦听器添加到文档模型:

  • 问题内容: 如何检测textField中的任何文本更改?委托方法适用于某些东西,但不能完全满足我的需要。因为直到返回YES,否则textField文本不可用于其他观察者方法。 例如在我的代码中没有得到更新的文本,用户已经输入了。 他们获得Java事件处理程序之类的方法是什么。 问题答案: 从正确的方式做uitextfield文本更改回调: 我捕获了发送到UITextField控件的字符,如下所示:

  • 问题内容: 我正在尝试获取手机号码文本框的值,以使用angular.js验证其输入值。我是使用angular.js的新手,但不确定如何实现这些事件,并在我的html代码上放了一些JavaScript来验证或操作表单输入。 这是我的HTML: 而我的控制器: 我不确定如何在angular.js中使用keydown事件,我也搜索了如何正确使用它。我可以验证我对指令的输入吗?还是我应该像使用控制器那样使

  • 我正在编写一个使用ChessClock类的游戏应用程序。这两个运动员每人都有一个钟。时钟每十分之一秒向自己发送一个信息流,如果运行,则减少剩余时间。当时间到期时,时钟会调用父视图组中的一个方法,该方法会停止时钟并设置一个标志,该标志会导致忽略进一步的触摸事件,从而用户无法再移动工件。我正在用kotlin写作,但我认为java程序员也会明白这一点: 这可以正常工作,但是如果用户按下后退按钮然后开始一