对于我的实习,我正在使用一个使用GPS数据的应用程序!这已经实现了,我编写了一个类,它将mapView发送的双值转换为用户选择的地理坐标格式(度,度 - 分或度 - 分 - 秒)!现在还有一些文本字段,用户应该输入一些坐标来添加航路点!
这里最好的技巧是以类似于57°14'03“N的格式从字符串中获取单独的数字!
由于它是用户输入,格式不是这个,它只是类似的!因此,最好将字符串解析出来,或者将用户输入法从文本字段限制为更严格的内容,只允许一种格式(每个数字f.ex.的单独文本字段)!
实际上是UX的一个问题,而不是一个怎么做!
答案 0 :(得分:2)
作为文本字段的代表,不允许无效的内容/格式是一个很好的第一步。
对于解析字符串,NSScanner
是用于拆分部分的适当类。如果您将格式关闭,可以使用componentsSeparatedByString:
将每个数字除以它们之间的空格。
答案 1 :(得分:2)
首先,评论。用感叹号结束你的所有句子是愚蠢的!
关于你的问题。是的,您应该对用户强制执行严格的输入格式。如果查看软件开发人员的字典,用户就是白痴的同义词。
我建议为每个纬度/经度的每个数值单独使用UITextFields,并使用标签绘制符号。用户将输入度数,输入将跳至分钟。用户输入分钟,输入跳转到秒。用户输入秒数,输入跳转到经度上的度数。
将每个输入验证为格式正确的数字。
如果您想使用像“57°14'03”N!“这样的字符串的自由格式输入,您可能需要创建一个正则表达式来验证它,以及对数字部分进行范围检查。如果您使用谷歌你应该在正则表达式上找到在线文档。我不经常使用它们来编写一个正常的表达式。