在我的自定义键盘(ios 键盘扩展)中,有一个 UIButton 打印一个字符串作为输入。
UIButton *nameButton=[UIButton buttonWithType:UIButtonTypeCustom];
nameButton.frame=CGRectMake(0, 0, buttonWidth, buttonHeight);
nameButton.center=CGPointMake(buttonWidth+buttonWidth/2,buttonHeight/2);
[nameButton setTitle:@"Name" forState:UIControlStateNormal];
[nameButton addTarget:self action:@selector(buttonsAction:) forControlEvents:UIControlEventTouchUpInside];
[topRow addSubview:nameButton];
-(void)buttonsAction :(UIButton*)sender
{
NSString *bName=sender.titleLabel.text;
[self.textDocumentProxy insertText:bName];
}
这工作正常并打印“名称”,这是按钮的标题。
在键盘扩展应用程序中,在另一个类中,用户选择名称并将其保存在 NSUserDefaults 中:
[[NSUserDefaults standardUserDefaults] setObject:selectedName forKey:@"Name"];
我想打印这个“selectedName”的字符串值,它从这个键盘扩展类所在的应用程序中改变。现在按钮操作的改变:
-(void)buttonsAction :(UIButton*)sender
{
NSString *bName=sender.titleLabel.text;
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
NSString *printValue=[def valueForKey:bName];
[self.textDocumentProxy insertText:printValue];
}
它不提供任何输入,并在按下按钮时切换到默认键盘。我认为扩展类在应用程序启动后执行,我在这里对键盘扩展的功能和生命周期有点困惑,我如何控制来自应用程序的输入文本,欢迎任何帮助。