gpt4 book ai didi

ios - 如何让 UITextFieldDelegate.shouldChangeCharactersInRange 触发自定义 inputView?

转载 作者:技术小花猫 更新时间:2023-10-29 11:19:50 25 4
gpt4 key购买 nike

我有一个自定义键盘,用于编辑 mytextField 中的文本,效果很好。但是,我永远无法让 shouldChangeCharactersInRange 委托(delegate)使用我的自定义键盘执行。当我使用我的实际键盘时它会执行(显然不是默认的 iPhone 键盘,因为我设置了 mytextField.inputView = numberPad.view)。我应该怎么做才能使用自定义键盘触发 shouldChangeCharactersInRange 委托(delegate)?顺便说一句,自定义键盘只是一堆按钮。

- (void) numberPadPressed: (UIButton *)sender {
[mytextField insertText:[[NSNumber numberWithInt:sender.tag] stringValue]];
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
NSLog(@"shouldChangeCharactersInRange: %@", resultingString);
return true;
}

- (void)viewDidLoad {
mytextField.text = @"";
mytextField.inputView = numberPad.view;
mytextField.delegate = self;
[mytextField becomeFirstResponder];
}

最佳答案

您永远不会得到使用自定义键盘调用的 shouldChangeCharactersInRange

你能得到的是UITextField的事件UIControlEventEditingChanged。因此,与其依赖 shouldChangeCharactersInRange 方法(众所周知,该方法存在错误),不如依赖此事件,每次用户更改文本字段的内容时都会触发该事件。

[textField addTarget:self action:@selector(myTextfieldChangedMethod:) forControlEvents:UIControlEventEditingChanged];

如果您使用自定义键盘修改文本字段,只需调用此方法通知所有监听器事件 UIControlEventEditingChanged

[textField sendActionsForControlEvents:UIControlEventTouchUpInside];

关于ios - 如何让 UITextFieldDelegate.shouldChangeCharactersInRange 触发自定义 inputView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com