我这几天一直在研究这个问题并且没有任何运气。我有一个文本到语音应用程序,我需要在每次用户点击空格键时在我的代码中触发一个方法。所以他们会打字并在每个单词后点击空格键,应用程序会做一些事情。我在这里发现了一些似乎相似的例子,但我还没有让它们起作用。我已经实现了建议的代码,如下所示,但我没有收到任何回复。这是我尝试过的。
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if([self.myTextView.text isEqualToString:@" "]) {
/* do something */
NSLog(@"YES YES YES");
}
return YES;
}
我还尝试按如下方式设置通知中心提醒:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textViewText:)
name:UITextViewTextDidChangeNotification
object:self.myTextView];
- (void)textViewText:(NSNotification *)notification {
if([self.myTextView.text isEqualToString:@" "]) {
/* do something */
NSLog(@"YES YES YES");
}
}
这些都不会触发NSLog。这是我基本上需要做的事情:
if(the user taps the spacebar) {
[self trigger the play method];
}
任何帮助将不胜感激。如果它有所作为,我的应用程序100%免费,没有广告,并被很多ALS和其他疾病的人使用,并失去了说话的能力。
答案 0 :(得分:2)
textView:shouldChangeTextInRange:replacementText:
将if([self.myTextView.text isEqualToString:@" "]) {
替换为if([text isEqualToString:@" "]) {
。用户刚刚输入的新文字text
和self.myTextView.text
是已存在的文字。
答案 1 :(得分:2)
试试这个
- (void)textViewText:(NSNotification *)notification {
UITextField *obje = notification.object;
if([obje.text isEqualToString:@" "]) {
/* do something */
NSLog(@"YES YES YES");
}
}