是否可以通过编程方式向iOS预测键盘上下文/源文本提供信息?

是否可以通过编程方式向iOS预测键盘上下文/源文本提供信息?,ios,ios8,quicktype,Ios,Ios8,Quicktype,我正在开发一个消息应用程序,希望iOS 8中的预测键盘能够识别正在撰写消息的用户正在回复上一条消息 所以我希望能够向键盘输入一个字符串,为预测提供上下文。因此,如果用户被问到一个可以解释为极坐标(yes/no)的问题,那么预测键盘应该有yes | no | Maybe 这对开发者有用吗 请注意,我不是在谈论自定义键盘,只是为标准键盘提供一些预测上下文。我也不关心如何定制快速回复。我只想让键盘知道它输入的是什么。因为现在有办法在苹果官方文档中找到关于如何输入的更多信息,我想这是不可能的。但是,您有

我正在开发一个消息应用程序,希望iOS 8中的预测键盘能够识别正在撰写消息的用户正在回复上一条消息

所以我希望能够向键盘输入一个字符串,为预测提供上下文。因此,如果用户被问到一个可以解释为极坐标(yes/no)的问题,那么预测键盘应该有
yes | no | Maybe

这对开发者有用吗


请注意,我不是在谈论自定义键盘,只是为标准键盘提供一些预测上下文。我也不关心如何定制快速回复。我只想让键盘知道它输入的是什么。

因为现在有办法在苹果官方文档中找到关于如何输入的更多信息,我想这是不可能的。但是,您有两种选择:

  • 保留标准键盘,并在其上方手动显示一个条形图(在UIView实例中)
  • 从头开始创建您的自定义键盘(困难得多)。你可以

您也可以考虑一种完全不同的用户体验。例如,如果您的用户可能选择您的建议之一,则只提供这些建议,并保留一个小按钮以输入自定义输入(并在此处关闭键盘)。如果用户可能要输入自定义输入,请参考上述两种选择。

不可能将建议严格输入默认键盘。但是,如果您想为用户提供同等的体验,我会使用
myTextView.autocorrectionType=uitextsautocorrectiontypeno
然后将该视图替换为我自己的自定义视图,该视图模仿建议视图,直到。用户键入字符或选择选项后,隐藏自定义建议视图并重新启用iOS建议栏

我将UIInputView子类化就是为了实现这一点(透明度和转换有点差,但其他一切都很好)

#导入
@协议建议ViewDelegate
@必需的
-(无效)建议选择:(NSString*)建议;
@结束
@接口建议视图:UIInputView
-(instancetype)初始化;
-(instancetype)initWithFrame:(CGRect)frame;
/**
*正在显示的建议列表。
*该数组包含0-3个字符串。
*
*@return表示当前建议字符串的NSString数组
*/
-(NSArray*)建议;
/**
*添加要在视图中显示的建议。
*如果已经有maxSuggestionCount建议,则添加的建议会将其中一个建议推出。
*如果已经存在maxSuggestionCount建议,且输入为“nil”,则最后一个建议将被删除。
*
*@param建议字符串向用户建议
*/
-(作废)添加建议:(NSString*)建议;
/**
*从显示的建议列表中删除建议。
*如果字符串不在集合中,则不会进行任何更改。
*
*@param suggestion NSString要从建议的字符串中删除
*/
-(无效)删除建议:(NSString*)建议;
/**
*接收NSArray或NSSet,并用输入替换“建议”。
*只识别前三个参数。
*对象应该是字符串。未定义的行为。
*
*@param建议NSArray或NSSet带有0-3个NSString
*/
-(无效)设置建议:(NSObject*)建议;
@属性(弱)id委托;
/**
*允许的最大建议数。默认值为3。
*/
@属性(非原子)NSInteger maxSuggestionCount;
@结束
#导入“SuggestionView.h”
#定义kScreenWidth[UIScreen mainScreen].bounds.size.width
@实现建议视图{
NSMutableOrderedSet*\u建议;
NSMutableArray*_建议按钮;
}
-(instancetype)初始化{
self=[self initWithFrame:CGRectMake(0.0f,0.0f,kScreenWidth,36.0f)];
如果(自我){
}
回归自我;
}
-(instancetype)initWithFrame:(CGRect)frame{
self=[super initWithFrame:frame inputViewStyle:UIInputViewStyleKeyboard];
如果(自我){
_建议=[[NSMutableOrderedSet alloc]initWithCapacity:3];
self.maxSuggestionCount=3;
_suggestionButtons=[[NSMutableArray alloc]init];
self.backgroundColor=[UIColor colorWithWhite:0.0f alpha:0.04f];
}
回归自我;
}
#pragma标记-修改建议
-(无效)添加建议:(NSString*)建议{
如果(建议){
[_suggestionsaddobject:suggestion];
}
而(_suggestions.count>self.maxSuggestionCount){
[\u suggestions removeObjectAtIndex:self.maxSuggestionCount];
}
}
-(void)removeSuggestion:(NSString*)建议{
[_建议移除对象:建议];
}
-(无效)设置建议:(NSObject*)建议{
if([suggestions respondsToSelector:@selector(countByEnumeratingWithState:objects:count:)]{
[_建议删除所有对象];
对于(NSArray*)建议中的(NSString*建议){
if(_suggestions.count