繁体   English   中英

键入时保持UIMenuController可见

[英]keep UIMenuController visible while typing

我想使用UIMenuController为基于应用程序中已有数据的文本字段显示自动填充选项。 选择菜单项时更新菜单项并填充文本字段的代码可以正常工作,但是我似乎找不到一种在键入时保持菜单控制器可见的方法。 我试过了

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES];
    return YES;
}

但这无能为力。 如果我在设置菜单可见的代码之前放了代码来更新菜单项,我最终将一遍又一遍替换文本字段中的第一个字母,并且菜单仍然无法显示。

可能要解决的真正问题是UIMenuController在显示时自动选​​择文本字段中的最后一个单词,但是我也没有找到解决方法。

我一直在试图找到一种方法来做到这一点。 假设您的代码通过使视图成为第一响应者来显示UIMenuController,请添加使菜单在操作块内可见的代码段:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES]; }];

这将显示菜单和在文本字段中输入的文本。 但是缺点是,文本字段不再是第一响应者。 因此,用户必须再次点击文本字段以输入新字符。 这不是非常用户友好。

自动补全的另一个选项是使用UITableView而不是UIMenuController,例如: http ://www.raywenderlich.com/336/auto-complete-tutorial-for-ios-how-to-auto-complete-with-custom-values

但是UIMenuController更干净。 我尝试了许多使UIMenuController成为赢家的方法,但是我没有优化这种方法。 如果您找到了解决方案,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM