在 UITextView 委托方法中未执行 if/else 语句
Posted
技术标签:
【中文标题】在 UITextView 委托方法中未执行 if/else 语句【英文标题】:if/else statement not being executed in UITextView delegate method 【发布时间】:2015-12-18 22:33:43 【问题描述】:我的 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
,什么也没有。
【问题讨论】:
你的意思是整个方法没有执行还是if语句里面的东西没有执行?您是否将您的对象设置为文本视图的委托? 整个方法没有执行 你是什么意思,将对象设置为文本视图的委托? 他的意思是你提供的代码可能属于UIViewController
子类。那么,您是不是 a)按住 Ctrl 键从您的 UITextView
拖动到您的视图控制器并建立 delegate
连接,b)改为在代码中执行,或者 c)忘记执行此操作?
你有你的答案
【参考方案1】:
如果您没有设置您的委托,请检查您的文本字段委托,然后它不会被调用..
在你的 Viewcontroller.H
选择你的 textview 给 textview 的委托。
【讨论】:
我已经实现了你所说的一切。但仍然没有运行 给我你的 Skype id【参考方案2】:首先你需要设置文本视图的委托。您可以使用 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];
【讨论】:
【参考方案3】:检查您的代表,您不能将您的 textview 的代表设为自己。再检查一次。或者你可能已经完成了其他课程。
【讨论】:
以上是关于在 UITextView 委托方法中未执行 if/else 语句的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionReusableView 中未调用委托
在 UITextView 委托方法 textViewDidChange 中将文本保存在 Core Data 中是不是有效?
在不使用委托方法的情况下检测 UITextView 和/或 UITextField 上的 SELECTION 更改