iOS目标C:当用户点击空格键时如何通知?

时间:2017-01-26 06:58:16

标签: ios objective-c iphone xcode8 ios10

我这几天一直在研究这个问题并且没有任何运气。我有一个文本到语音应用程序,我需要在每次用户点击空格键时在我的代码中触发一个方法。所以他们会打字并在每个单词后点击空格键,应用程序会做一些事情。我在这里发现了一些似乎相似的例子,但我还没有让它们起作用。我已经实现了建议的代码,如下所示,但我没有收到任何回复。这是我尝试过的。

-(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和其他疾病的人使用,并失去了说话的能力。

2 个答案:

答案 0 :(得分:2)

textView:shouldChangeTextInRange:replacementText:if([self.myTextView.text isEqualToString:@" "]) {替换为if([text isEqualToString:@" "]) {。用户刚刚输入的新文字textself.myTextView.text是已存在的文字。

答案 1 :(得分:2)

试试这个

- (void)textViewText:(NSNotification *)notification {
    UITextField *obje = notification.object;
    if([obje.text isEqualToString:@" "]) {
        /* do something  */
        NSLog(@"YES YES YES");
    }
}