我有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;
}
}
}
答案 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。