2014-11-05 38 views
0

我想使用UIMenuController根据我的应用中已有的数据显示文本字段的自动填充选项。更新菜单项并填充文本框的代码可以正常工作,但我似乎无法找到一种方法在打字时保持菜单控制器可见。我已经尝试过在输入时保持UIMenuController可见

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

但是什么也没做。如果我在代码之前更新菜单项的代码以将菜单设置为可见,我最终将一遍又一遍地替换文本字段中的第一个字母,菜单仍然无法显示。

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

回答

0

我一直在想办法做同样的事情。假设你的代码通过使视图急救员显示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成为我的赢家,但我没有优化这种方法。如果您找到了解决方案,请告诉我。

+0

我最终选择了一条不同的路线,占用较少的房地产,实际上看起来非常棒。查看Jon Sibley在HotelTonight发布的[此自动完成文本字段](https://github.com/hoteltonight/HTAutocompleteTextField)。 – codemolly 2014-12-12 21:43:59

+0

是的,UIMenuController的替代方式更吸引人。 – 2014-12-17 10:56:22

相关问题