-2

我正在实现委托方法:

-(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”子句的末尾都有返回值,那么为什么我仍然收到这个警告?

4

5 回答 5

2

您的函数应该收到一个布尔值,因为您的函数的返回类型为 BOOL 而不是 void put

return YES; 

shouldChangeCharactersInRange:()在条件/迭代语句之外的方法结束时。

然后警告应该去。

于 2013-03-29T05:03:02.077 回答
2

我在每个“if”子句的末尾都有返回值

不,你没有。最后一个else分支没有实现。

于 2013-03-29T05:08:39.813 回答
0

return YES/NO;在方法的末尾添加。可能会解决你的问题。因为如果您
if - condition - Block的任何一个未执行,则此方法没有返回值。

于 2013-03-29T05:04:27.507 回答
0

编译器看到如果textfield.tag不是 1、2 或 3,则没有返回值。在函数末尾添加 return YES/NO。

于 2013-03-29T05:07:05.590 回答
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;
}
于 2013-03-29T05:07:11.663 回答