如何检测 UIKeyboard“退格键” UITextField 上的按钮触摸?

发布于 2024-11-26 04:33:24 字数 175 浏览 2 评论 0原文

如何检测 UIKeyboard 上按下的退格按钮?

在此处输入图像描述

谢谢


编辑:是否有任何键盘委托返回按键值?

How can i detect backspace button pressed on UIKeyboard?

enter image description here

thanks


EDIT: Is there any keyboard delegate that returns key pressed value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清君侧 2024-12-03 04:33:24

如果 UITextField 为空,则不调用 shouldChangeTextInRange 委托方法
您可以子类化 UITextField 并重写此方法:

-(void)deleteBackward;
{
    [super deleteBackward];
    NSLog(@"BackSpace Detected");
}

由于 UITextField 符合 UITextInput 协议,因此实现了此方法,并且您可以重写它以检测何时按下退格键。
然后,您可以编写自己的协议/委托方法,以在检测到退格键时提醒您的自定义文本字段委托。

if the UITextField is empty, the shouldChangeTextInRange delegate method is not called
You can subclass UITextField and override this method:

-(void)deleteBackward;
{
    [super deleteBackward];
    NSLog(@"BackSpace Detected");
}

since UITextField is compliant to the UITextInput protocol, this method is implemented, and you can override it to detect when backspace is pressed.
Then, you can write your own protocol/delegate method to alert your custom textfield delegate if the backspace is detected.

街角卖回忆 2024-12-03 04:33:24

首先,引用 UITextFieldUIViewController 需要符合 UITextFieldDelegate 协议。然后将您的类设置为 UITextFielddelegate (例如 [myTextField setDelegate:self] )。然后在您的班级中添加以下内容。当 "" 字符串作为 replacementString 发送时,您知道它是退格键。

(BOOL)textField:(UITextField *)textField 
      shouldChangeCharactersInRange:(NSRange)range 
      replacementString:(NSString *)string
{                
    if ([string isEqualToString:@""]) {
        NSLog(@"Backspace");            
    }
    return YES;
}

First of all your UIViewController that references the UITextField needs to conform to the UITextFieldDelegate protocol. Then set your class as delegate to the UITextField (eg. [myTextField setDelegate:self] ). Then in your class you add the following. When a string of "" is sent as the replacementString you know it's backspace.

(BOOL)textField:(UITextField *)textField 
      shouldChangeCharactersInRange:(NSRange)range 
      replacementString:(NSString *)string
{                
    if ([string isEqualToString:@""]) {
        NSLog(@"Backspace");            
    }
    return YES;
}
深陷 2024-12-03 04:33:24

我暂时

textField.text = @"\u200B";

在退格键上的 textFieldDidBeginEditing 上插入一个零空格字符,它删除了该字符,但从图形上看是相同的!

这是一个黑客,它有效,但它隐藏了占位符文本......不好......

Temporary i'm inserting a zero space char on textFieldDidBeginEditing

textField.text = @"\u200B";

on backspace, it remove that chars, but graphically it's the same!

It's an hack, it works, but it hide placeholder text... not good...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文