if / else语句未在UITextView委托方法中执行

时间:2015-12-18 22:33:44

标签: ios objective-c if-statement uitextview uitextviewdelegate

我的objective-c代码中有一个if / else语句。 if / else语句的运行方式如下:

-(void)textViewDidBeginEditing:(UITextView *)textView
{
    if(textView==self.heardTextView)
    {
        NSString *string = textView.text;
        if ([string rangeOfString:@"CLOSER"].location == NSNotFound)    
        {
           NSLog(@"closest");
        } 
    }
}

if / else语句的前提是 - 如果textview等于某个单词将运行某个单词。但是这段代码没有运行。

我在代码和breakpoint上放了一个NSLOG而没有。

3 个答案:

答案 0 :(得分:0)

检查您的文本字段委托,如果您没有设置您的委托,那么它就不会被调用..

在Viewcontroller.H

enter image description here

选择textview为textview提供委托。

enter image description here

答案 1 :(得分:0)

首先,您需要设置文本视图的委托。您可以使用Interface Builder执行此操作,但如果您更喜欢使用代码,则可以使用视图控制器的viewDidLoad方法执行此操作:

myTextView.delegate = self;

现在,您何时希望执行NSLog语句?现在它看起来只有在你键入“CLOSER”时才会运行,然后让文本视图失去焦点,然后再次点击它。

如果您希望在键入时运行NSLog,则应使用:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

同样要小心,在测试其内容之前,您需要在文本字段中计算下一个字符串值:

NSString *finalText = [textField.text stringByReplacingCharactersInRange:range withString:string];

答案 2 :(得分:0)

检查您的代表,您不能将textview的代表作为自己。再次检查一下。或者你可能已经完成了其他一些课程。