如果用户输入任何数据,如何通过条件只调用一个代码

时间:2013-11-11 04:35:26

标签: ios iphone uitextfield

我有textField我希望当用户输入数据并按空格时,它应该在tableView中添加新行它工作正常但我也希望在textFieldDidEndEditing它也应该添加行,但当我的代码中没有任何空格时,如果有任何用户按下了空格代码,它也会添加行,然后添加textFieldDidEndEditing的其他行。

    -(void)textFieldDidEndEditing:(UITextField *)textField {
    if (textField==tagTextField) {
        [self showAnimationBack];
    }

    if (textField.tag==2) {
        if (textField.text.length > 0 || ![tagTextField.text isEqualToString:@""]) {
            [textField resignFirstResponder];
            [tagArray addObject:tagInputField.text];
            [tableView reloadData];

            tableView.frame = CGRectMake(tableView.frame.origin.x, tableView.frame.origin.y, tableView.frame.size.width, tableView.contentSize.height);

            [tableView.layer setCornerRadius:7.0f];
            [tableView.layer setMasksToBounds:YES];
            tableView.layer.borderWidth = 0.5;
            tableView.layer.borderColor = [UIColor grayColor].CGColor;

            [self showAnimationBack];

            float y = descriptionTextImageView.frame.origin.y;

            float yp = publishButton.frame.origin.y;

            NSLog(@"Y is %2.f",y);

            if (y==405.00) {
            [descriptionTextImageView setFrame:CGRectMake(48,y+30,250,90)];
            [publishButton setFrame:CGRectMake(40,yp+30,250, 50)];
            }

            else{
                y=y+30;
                [descriptionTextImageView setFrame:CGRectMake(48,y,250,90)];
                [publishButton setFrame:CGRectMake(40,yp+30,250, 50)];
            }
      }
}
}

其他按下空间时

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {


    if (textField.tag==2) {


   if ( [string isEqualToString:@" " ]){


    if (textField.text.length > 0 || ![tagTextField.text isEqualToString:@""]) {
        [textField resignFirstResponder];
        [tagArray addObject:tagInputField.text];
        [tableView reloadData];
        tableView.frame = CGRectMake(tableView.frame.origin.x, tableView.frame.origin.y, tableView.frame.size.width, tableView.contentSize.height);

        [tableView.layer setCornerRadius:7.0f];
        [tableView.layer setMasksToBounds:YES];
        tableView.layer.borderWidth = 0.5;
        tableView.layer.borderColor = [UIColor grayColor].CGColor;

        float y = descriptionTextImageView.frame.origin.y;

        float yp = publishButton.frame.origin.y;

        NSLog(@"Y is %2.f",y);

        if (y==405.00) {
            [descriptionTextImageView setFrame:CGRectMake(48,y+30,250,90)];
            [publishButton setFrame:CGRectMake(40,yp+30,250, 50)];
        }
        else{
            y=y+30;

        [descriptionTextImageView setFrame:CGRectMake(48,y,250,90)];
            [publishButton setFrame:CGRectMake(40,yp+30,250, 50)];
        }
        [self showAnimationBack];
    }

    }
   else {

    return YES;
    }
     }
    }

3 个答案:

答案 0 :(得分:0)

我无法完全得到你真正想要的东西。如果你试图避免添加新的,如果用户只是按空格键而不输入任何其他字符,那么下面的代码可以帮助你:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range     replacementString:(NSString *)string { 

    NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
    NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];
    if  ([resultingString rangeOfCharacterFromSet:whitespaceSet].location == NSNotFound)      {
        return YES;
    }  else  {
        return NO;
    }
 }

答案 1 :(得分:0)

使用uitextview它的工作就是你想要的

答案 2 :(得分:0)

我应该调用 textFieldShouldReturn

textFieldDidEndEditing 在文本字段重新启动它的第一个响应者时触发,并且在按下返回按钮时触发 textFieldShouldReturn

Mayb你的文本域永远不会辞去它的第一个响应者。您可以通过放置一些调试输出或通过触摸导航出文本字段来检查它 - 例如,开始键入然后只需触摸字段外部以强制它重新签名firstResponder。