Ian*_*nry 0 cocoa-touch uitextview ios uitextinput
我正在自己做一些自定义自动完成的东西insertText:,但是如果有一个自动更正的建议可见,则视图进入一个奇怪的状态.
如果我使用[textView unmarkText]它,它会解散自动更正弹出的东西 - 但它接受自动更正(这是坏的).有没有办法以编程方式拒绝自动更正建议?
我当前的"解决方案"有效,但它很粗糙,而且我没有理由认为它将来会继续发挥作用.有一个更好的方法吗?
- (void)dismissAutocorrectSuggestionForTextView:(UITextView *)textView {
NSRange range = textView.selectedRange;
textView.text = textView.text;
textView.selectedRange = range;
}
Run Code Online (Sandbox Code Playgroud)
我尝试了类似于你的东西,但是以这种方式设置textView的文本会导致textView不必要地滚动(我的textView包含相当多的文本).我的解决方案涉及以非动画方式恢复contentOffset.它并不比你拥有的更优雅,但至少它可以帮助那些需要处理更长文本的人.
至于它是否会继续在未来继续工作,我从iOS 4开始尝试了类似的东西,并且它继续通过iOS 6工作.
- (void)rejectAutoCorrectSuggestionInTextView:(UITextView *)textView
{
if ([textView isFirstResponder])
{
NSString *original = textView.text;
NSRange originalRange = textView.selectedRange;
CGPoint originalOffset = textView.contentOffset;
// Force any pending autocorrection to be applied
[textView resignFirstResponder];
[textView becomeFirstResponder];
NSString *final = textView.text;
if (![original isEqualToString:final])
{
textView.text = original;
textView.selectedRange = originalRange;
[textView setContentOffset:originalOffset animated:NO];
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |