0

我有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;
    }
     }
    }
4

3 回答 3

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;
    }
 }
于 2013-11-11T04:41:56.017 回答
0

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

于 2013-11-11T04:54:04.180 回答
0

我觉得你应该打电话给textFieldShouldReturn

textFieldDidEndEditing在文本字段退出它的第一响应者时触发,并且在按下返回按钮时触发textFieldShouldReturn 。

也许您的文本字段永远不会放弃它的 firstResponder。您可以通过放置一些调试输出或通过触摸导航出文本字段来检查它 - 例如,开始输入然后只需触摸字段外部以强制它退出 firstResponder。

于 2013-11-11T05:21:49.513 回答