iphone - UITextField 键盘返回按钮应更改为完成按钮

标签 iphone ios ipad uitextfield ipod

我有五个文本字段,比如 textField1、textField2、textField3、textField4、textField5。

我想要做的是,当所有文本字段都包含一些文本时,UITextField 键盘返回按钮应该更改为“完成”按钮。 我试过了,

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([textField1.text doubleValue]!=0)
        if([textField2.text doubleValue]!=0)
            if([textField3 doubleValue]!=0)
                if([textField4 doubleValue]!=0)
                    if([textField5 doubleValue]!=0)
                    {
                        [textField setReturnKeyType:UIReturnKeyDone];
                    }
                    else
                        [textField setReturnKeyType:UIReturnKeyDefault];
                    else
                        [textField setReturnKeyType:UIReturnKeyDefault];
                    else
                        [textField setReturnKeyType:UIReturnKeyDefault];
                    else
                        [textField setReturnKeyType:UIReturnKeyDefault];
                    else
                        [textField setReturnKeyType:UIReturnKeyDefault];
}

我也试过

- (void)textFieldDidEndEditing:(UITextField *)textField
{
}

两者都不工作...请任何人帮助我...

最佳答案

你最好使用 textFieldShouldBeginEditing,这里只需检查所有文本字段是否包含非空值,

所以代码应该是这样的

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if([[tf1.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0 && [[tf2.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0 [[tf3.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0) {
        [textField setReturnKeyType:UIReturnKeyDone];
    }
    return TRUE;
}

////编辑

我已经检查了这段代码。它工作正常。所以试试这个,让我知道。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if ([self areAllFieldsNonEmpty]) {
        [textField setReturnKeyType:UIReturnKeyDone];
        [textField reloadInputViews];
    } else {
        [textField setReturnKeyType:UIReturnKeyDefault];
        [textField reloadInputViews];
    }
    return TRUE;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([self areOtherFiledsNonEmptyThan:textField]) {
        if (range.location == 0 && range.length == 0) {
            [textField setReturnKeyType:UIReturnKeyDone];
            [textField reloadInputViews];
        } else if (range.location == 0 && range.length == 1) {
            [textField setReturnKeyType:UIReturnKeyDefault];
            [textField reloadInputViews];
        }
    }
    return TRUE;
}

- (NSInteger)lengthOf:(UITextField *)tf {
    return [[tf.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length];
}

- (BOOL)areOtherFiledsNonEmptyThan:(UITextField *)tf {
    BOOL isEmpty = TRUE;
    for (UITextField *textField in self.view.subviews) {
        if ([textField isKindOfClass:[UITextField class]] && tf != textField) {
            if ([self lengthOf:textField] == 0) {
                isEmpty = FALSE;
                break;
            }
        }
    }
    return isEmpty;
}

- (BOOL)areAllFieldsNonEmpty {
    BOOL isEmpty = TRUE;
    for (UITextField *textField in self.view.subviews) {
        if ([textField isKindOfClass:[UITextField class]]) {
            if ([self lengthOf:textField] == 0) {
                isEmpty = FALSE;
                break;
            }
        }
    }
    return isEmpty;
}

关于iphone - UITextField 键盘返回按钮应更改为完成按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12488647/

相关文章:

ios - 实现 AdMob SDK - iPhone

ios - Xamarin.iOS 错误 : The Apple iOS SDK is not installed.(iOS9、XCode 7 测试版)

iphone - iCloud 和 UIDocument : Is there a way to clean transaction logs

ios - 为什么我在 Swift 中收到多个 UILocalNotifications?

ipad - UIViewControllerHierarchyInconsistency 在 iPad 方向 iOS 6.1.3 期间发生

iphone - 为绘图应用程序实现橡皮擦功能

ios - UI本地通知

ios - 在iOS上嵌入用户的最新YouTube视频

iphone - iOS 开发 : How can I cause a UITableViewCell to change into an editable UITextField when it's tapped?

iphone - 将 SQLite 中的数据保存为 BLOB 是一种良好的编程习惯吗?