gpt4 book ai didi

ios - 带有 UIKeyboardType.NumberPad 和非数字文本的 UITextField

转载 作者:行者123 更新时间:2023-11-29 00:57:56 25 4
gpt4 key购买 nike

我正在使用 TextField 从特定形式的用户号码中获取 xxx-xxx-xx-xx

我需要向用户显示 NumberPad 键盘并在编辑期间在第 3、6 和第 8 位数字后添加分隔符“-”。

问题是当我指定

TextField.keyboardType = UIKeyboardType.NumberPad

并在我的 textFieldDidChange 方法中添加分隔符,TextField 停止响应添加下一个字符或删除。

更改为 UIKeyboardType.Default 效果很好,但键盘不仅仅是数字。

最佳答案

您好,您可以使用下面的代码。

textField.keyboardType = KeyboardType Number Pad;

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

@try
{
NSString *filter = @"(###) - (###) - (####)"; //Change Fileter As Per requirement.

if(!filter) return YES; // No filter provided, allow anything

NSString *changedString = [textField.text stringByReplacingCharactersInRange:range withString:string];

if(range.length == 1 && // Only do for single deletes
string.length < range.length &&
[[textField.text substringWithRange:range] rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]].location == NSNotFound)
{
// Something was deleted. Delete past the previous number
NSInteger location = changedString.length-1;
if(location > 0)
{
for(; location > 0; location--)
{
if(isdigit([changedString characterAtIndex:location]))
{
break;
}
}
changedString = [changedString substringToIndex:location];
}
}

textField.text = filteredPhoneStringFromStringWithFilter(changedString, filter);

return NO;

}
@catch (NSException *exception) {
NSLog(@"Exception shouldChange %@",[exception description]);
}

关于ios - 带有 UIKeyboardType.NumberPad 和非数字文本的 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37434008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com