- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在静态单元格 tableView 上有一个名为 textField
的 UItextField
。该字段包含货币金额 - 例如“$10,000.00”。
编辑该金额时,货币和千位分组符号有点碍事。因此,当该字段成为第一响应者时,我想删除它们。
我在 textFieldShouldBeginEditing
中执行此操作。
我第一次这样做时,一切正常。 textField
的内容被重新格式化,没有货币和千位组分隔符。
在 textFieldDidEndEditing
上,我再次将值重新格式化为正确的货币字符串。这也有效。
当我第二次重新进入该字段时出现问题。在调试时我可以看到 textField.text
已经变成了没有货币符号和分组符号的字符串,但是显示器没有显示。虽然第一次成功了!第二次看起来屏幕上的内容与调试器看到的值不匹配。
我试过这样的事情:
...但这不起作用。
所以我将 textFieldShouldBeginEditing
中删除货币格式的代码复制到新的委托(delegate)方法 textFieldDidBeginEditing
。
然后一切正常。我可以多次点击其他控件并返回到 textField,每次输入时控件都会丢失其格式,并在失去焦点后恢复为格式化的货币字符串。
所以我决定删除方法textFieldShouldBeginEditing
。但是后来事情又坏了!看起来我必须同时实现 textFieldShouldBeginEditing
和 textFieldDidBeginEditing
才能准备 textField
的内容供用户编辑?
这是一个错误吗?
extension Double {
public func doubleToString(numberStyle: NumberFormatter.Style, decimals: Int, withThousandSeparator: Bool) -> String {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = numberStyle
numberFormatter.maximumFractionDigits = decimals
if !withThousandSeparator {
numberFormatter.groupingSeparator = ""
}
return numberFormatter.string(from: NSNumber(value: self)) ?? ""
}
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === self.textField {
textField.text = amount.doubleToString(numberStyle: .decimal, decimals: 2, withThousandSeparator: false)
}
}
最佳答案
你应该尝试 textField 的文本更改事件,附上下面的代码:
在 textField 上添加目标以更改文本:
self.textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
textField 的文本更改函数:
func textFieldDidChange(_ textField: UITextField)
{
if textField === self.textField
{
//try formatting here
}
}
关于ios - 意外行为文本 textFieldShouldBeginEditing/textFieldDidBeginEditing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53326641/
我想实现textFieldShouldBeginEditing,以便我可以为某些文本字段显示带有对话框的弹出窗口,而其他文本字段则为自由文本。 我是这样实现的: func textFieldSh
我有两个文本字段 dateNTextField 和 prenomTextField,其中仅设置了 dateNTextField 的委托(delegate): func textFieldShouldB
#import #import "HZAreaPickerView.h" @interface CodeNumberViewController : UIViewController @proper
我正在尝试使用 textFieldShouldBeginEditing 来禁止键盘显示自定义 UITextField。我正在实现所有 UITextFieldDelegate 方法。然而,出于某种原因,
我在静态单元格 tableView 上有一个名为 textField 的 UItextField。该字段包含货币金额 - 例如“$10,000.00”。 编辑该金额时,货币和千位分组符号有点碍事。因此
我有一个简单的 UITableViewController,它有 6 行,每行都有一个 UITextField。我希望能够单击每一行并将键盘应用于每一行。一切正常,除了出于某种原因我必须在每一行上单击
下面的代码删除了 inputField 中的最后一个字符,当我有默认值时它工作得很好。但如果文本字段为空,则会出现错误,因为没有要删除的最后一个字符。 如何用if else检查? func textF
textFieldDidBeginEditing 和 textFieldShouldBeginEditing 之间的确切区别是什么。我想知道我们在哪种情况下使用它们(我知道当我们在文本字段中输入任何内
我的界面中有两个文本字段。 txtUser 允许用户输入用户名,txtPass 允许用户输入密码。我在 viewDidLoad 方法中以编程方式分配了标签。我使用这些标签来识别不同的文本字段。问题是
我有一个表单屏幕,其中包含多个包含在 UITableView 中的输入字段。如果用户连接了蓝牙键盘,那么他就可以按“Tab”键。问题是每个文本字段都会多次调用 textFieldShouldBegin
当用户在 uitextfield 中至少写入一个字符时,我想启用导航栏上的完成按钮(在模态视图中)。我试过: textFieldDidEndEditing:在前一个 uitextfield 退出第一响
我在 UIView 上有多个文本字段。 我放弃了 textFieldShouldBeginEditing 方法中的先前文本字段,其中执行了以下事件序列 收到与隐藏前一个字段的键盘的字段相对应的 UIK
我在创建消息传递应用程序时遇到问题,当打开键盘时,我不确定键盘的总大小和框架(字典区域是否打开)。 我想获得总尺寸和框架 textFieldShouldBeginEditing 代表。 最佳答案 您应
我正在使用 UIPickerViewDataSource, UIPickerViewDelegate我正在使用 countrypickerview 创建一个 countrytxtfield 并且我能够
我在 UIView 中有多个 UITextField。我在用户开始使用 textFieldShouldBeginEditing: 编辑字段之前更改 View 布局,然后通过 textFieldDidE
我不确定为什么 textFieldShouldBeginEditing 返回所有 UiTextField 文件:PaymentViewControllerDummy.swift class Pay
我有一个这样的自定义类: @interface formParser : NSObject { .... 在 .m 中,我创建了一个 UITextField 元素,如下所示: UITextField
我有地址、城市、州和邮政编码的四个文本字段。我只需要为状态字段调用选择器 View ,所以我只需要在状态文本字段上隐藏键盘。我正在尝试使用这段代码在 textFieldShouldBeginEditi
我是一名优秀的程序员,十分优秀!