UItextView 和返回 space 键盘上的点击事件

UItextView and back space click event on keyboard

我想检测 space 在 UITextView.

中键盘上的点击事件中删除了哪个字符

因此,如果有人知道解决方案,请提供帮助。 提前致谢。

您应该实施协议 UITextViewDelegate 方法

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;

然后只获取范围内的文本 试试这个有一个日志(它是空的,以防它不是替换而是新输入)

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {


        NSLog(@"deleting this string: |%@|", [textView.text substringWithRange:range]);


    return YES;
}

ps

记得将您的 class 设置为 UITextView

的代理

这就是你想要的。此方法检测何时删除字符,并将其打印到控制台。

@interface ViewController ()<UITextFieldDelegate>
{
    UITextField *textField;
    NSString *currentText;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    textField  = [[UITextField alloc] initWithFrame:CGRectMake(20, 50, self.view.frame.size.width-40, 30)];
    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged];
    textField.delegate = self;
    textField.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:textField];
}

-(void)textChanged:(UITextField *)sender{

    if (!currentText) {
        currentText = sender.text;
    }

    if (![currentText isEqualToString:sender.text]) {

        //The text that is in the textField at the moment is shorter than it was the last time the textfield was editted... This shows that a backspace was pressed
        if (currentText.length > sender.text.length) {


            NSLog(@"Character: %@", [currentText substringFromIndex:sender.text.length]);

        }



    }

    currentText = sender.text;


}


@end