我正在实现委托方法:
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
我在我的应用程序中使用了以下代码。但是,我收到了警告,我不知道为什么。我的代码如下:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.tag == 1) {
if(blah blah blah)
return YES;
//more code
if (blah blah) {
//more code
}
else if (blah blah) {
//more code;
}
else if (blah blah blah) {
//more code
}
//even more code
return NO;
}
else if (textField.tag == 2){
if(textField.text.length > 1) {
return NO;
}
return YES;
}
else if (textField.tag == 3) {
if(textField.text.length > 2) {
return NO;
}
return YES;
}
}
我得到的警告是:
“控制可能会达到无效功能的结束。”我在每个“if”子句的末尾都有返回值,为什么我仍然会收到此警告?
答案 0 :(得分:2)
你的函数应该接收一个布尔值,因为你的函数有返回类型BOOL not void put
return YES;
在条件/迭代语句的shouldChangeCharactersInRange:()
方法的末尾。
然后应该发出警告。
答案 1 :(得分:2)
我在每个“if”子句
的末尾都有返回值
不,你没有。最后一个else
分支未实现。
答案 2 :(得分:0)
在方法结束时添加return YES/NO;
。可能会解决你的问题。因为如果你有任何一个
if - condition - Block
未执行,则此方法未返回值。
答案 3 :(得分:0)
编译器看到如果textfield.tag
不是1,2或3,则没有返回值。在功能结束时添加返回YES / NO。
答案 4 :(得分:0)
请尝试使用这个...
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag == 1)
{
if(blah blah blah)
return YES;
//more code
if (blah blah)
{
//more code
}
else if (blah blah)
{
//more code;
}
else if (blah blah blah)
{
//more code
}
//even more code
return NO;
}
else if (textField.tag == 2)
{
if(textField.text.length > 1)
{
return NO;
}
return YES;
}
else if (textField.tag == 3) {
if(textField.text.length > 2) {
return NO;
}
return YES;
}
}
return YES;
}