2012-05-09 26 views
0

我正在创建一个测试应用程序来计算矩形的面积。此应用程序使用NSTextField控件来获取矩形的长度和宽度。
预期用户输入将包括长度单位的字符串值(样本值2.5英寸,1500毫米)。 我希望NSTextField自动将该值转换为厘米(cm),以便在文本字段失去焦点后立即显示转换后的值(,单位为厘米)。在NSTextField中处理度量单位

对于例如:

用户输入长度为:1500毫米

一旦用户进入下一个文本字段中输入宽度,长度字段显示

显示值:150厘米

我们该如何做到这一点?

回答

1

我想你想要使用委托方法controlTextDidEndEditing:,它将在编辑完成时发送到文本字段的委托。一旦你从字段编辑器中得到字符串,你需要以某种方式解析它以找到单位(你如何解析它取决于你需要找到的东西)。如果你有很少的东西你正在寻找,比如cm,mm,m,那么你可以使用rangeOfString:并且测试0的长度来找出输入的单位。顺便说一句,你应该正确地做你的数学 - 1500毫米= 150厘米

+0

感谢您的回答以及纠正我的数学问题:P – rsharma

0

我会考虑一种不同的方法,使用UIPicker显示可用单位,并让他们分别输入数字。

否则,你将不得不做所有这些解析。没有看到解析的重点。另外,如果他们在拼写单位时出错,或者用不同的方式表示它,那么你也必须考虑到这一点。取决于你的应用程序,但是如果用户必须输入单位,他们可能会更方便地使用UIPicker。

+0

由于这个应用程序是我的一个项目的POC,所以我将不得不坚持使用NSTextField。 – rsharma

+0

好吧,那么,你只需要使用NSString中的方法来解析文本。您需要查看NSString参考中的方法,特别是在“查找字符和子串”标题下。从字符串中提取数字非常简单。您可以使用-doubleValue(或-integerValue,如果不允许小数)提取数字部分。然后,您可以通过删除数字/空格或在数字后搜索空格来搜索单位字符串。然后你只需要根据某个列表来确定单元字符串中表示哪个单元。等等。 – shim

+0

我能够通过对NSTextField进行子分类并重写 - (BOOL)textShouldEndEditing来实现此目的,但问题是该子类的每个对象都会显示相同的行为。所以目前我正在通过对NSFormatter进行子分类来实现它。 – rsharma