UITextView insertText 调用 shouldChangeTextInRange: replacementText:
Posted
技术标签:
【中文标题】UITextView insertText 调用 shouldChangeTextInRange: replacementText:【英文标题】:UITextView insertText call shouldChangeTextInRange: replacementText: 【发布时间】:2013-09-25 19:03:28 【问题描述】:我有一个UITextView
。我将myTextView
的委托设置为self
,当我进行正常编辑时,此方法调用得很好:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
NSLog(@"Called");
在我的应用程序中,我调用了我的代码:[myTextView insertText:@"Hello World"];
。当我这样做时,我需要在插入文本后调用textView:shouldChangeTextInRange:replacementText:
。我该怎么做?
【问题讨论】:
您自然会在进行编辑之前显式调用它,然后在返回YES
时进行编辑。
@Wain - 我该如何明确称呼它?
【参考方案1】:
明确地调用它。在编辑之前调用它并且仅在它返回YES
时执行编辑。要明确调用它,您需要知道所选范围(使用selectedTextRange
获取所选范围),就是这样。您已经有了要添加的文本和文本视图。
【讨论】:
【参考方案2】:感谢@Wain 的回答!
以下是有效的:
- (void)insertText
NSString *stringToAdd = @"Hello World";
NSString *replacementText = [myTextView.text stringByAppendingString:stringToAdd];
[napkinTextView insertText:stringToAdd];
[self textView:myTextView shouldChangeTextInRange:NSMakeRange(0, stringToAdd.length) replacementText:replacementText];
【讨论】:
以上是关于UITextView insertText 调用 shouldChangeTextInRange: replacementText:的主要内容,如果未能解决你的问题,请参考以下文章
需要在 iMessage Extension 中的 insertText 方法上调用 didStartSending
需要在 iMessage Extension 中的 insertText 方法上调用 didStartSending
如何以编程方式关闭 UITextView 中的自动更正弹出框?
有没有办法覆盖 UITextView UIKeyInput 以便可以从超级视图输入文本?