iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

时间:2021-08-05 03:27:45

1.表单键盘遮挡

应用场景为一个collectionView上有多个textfield、textView供用户填写信息。

之前输入项较少时,采取的方法比较粗暴,didSelectItemAtIndexPath时,记下collectionViewCell距离屏幕底部的间距,再与键盘高度作比较,根据实际情况调整collectionView的contentOffset,但是当输入项较多时这个方法就不行了,需要计算更多collectionViewCell距离屏幕底部的间距,容易出错。

《Text Programming Guide for iOS》-Managing the Keyboard一节中介绍了解决办法,这里由于用了Masonry,不方便直接调整frame,稍微变通下即可

(1)选择输入项时记下indexPath,方便后续collectionView滑动操作iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

这里需要注意的是,collectionViewCell里textField、textView的userInteractionEnabled都设置为NO,在用户选中时才成为第一响应者。iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

(2)获得键盘高度,根据键盘高度对collectionView调整,并滑动到目标cel的位置iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View DebuggingiOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

(3)键盘隐藏时,恢复collectonView的初始约束iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

2.浮点数价格格式化显示

有这样一个应用场景:价格精确显示到2位小数 ,小数点为0则不显示,例如99.00显示为99,99.90显示为99.9元,直接用NSString的stringWithFormat方法转换小数点部分的显示是不符合要求的,会有多余的0,解决办法是先转换得到包含2位小数的字符串,再特殊处理一下即可将小数部分的0去掉,如图所示:

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

参考:iOS 浮点数去掉小数点之后的0.00以及价格格式显示

3.省市区选择器

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

数据来源:中国省市区三级联的JSON格式 

需要注意数据不是最新的,例如北京的密云县、延庆县已经撤县改区,崇文区、宣武区已经被撤销合并,根据数据结构这里将数据用两个Model来表示了

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View DebuggingiOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

使用UIPickerView实现,三列数据分别代表省市县,联动选择即可。有三个地方需要注意:

(1)当已有数据,再次进行选择需要定位到现有数据位置

通过已有数据获得pickerView三列的index值,但是需要注意初始化数据后要先reload后,再通过selectRow方法滚动到指定位置,否则会滚动不到指定位置。 

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

(2)三级联动

即省/直辖市改变,市、区/县也要跟着改变,通过更新对应数据集合即可,这里做的是省/直辖市改变,市、区/县默认滚动到第一条显示,市改变,区/县默认滚动到第一条显示。iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

(3)内容样式修改

默认显示的内容样式不符合要求,需要修改其内容样式,例如文字大小等等,UIPickerView本身是提供了这样的一个代理方法供我们去自定义

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

4.View Debugging

Xcode本身提供了一些视图调试的小工具 ,画界面的时候调试分析问题很管用,尤其是当界面显示不正确的时候有助于定位问题。Xcode工具栏Debug-View Debugging中能找到这些小工具,从上到下分别是屏幕截图快照、视图分层次析以及显示View的frame等等

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

(1)屏幕截图快照顾名思义就是截取屏幕当前状态保存为照片了

(2)Capture View Hierarchy这个有助于检查界面的约束、视图层次等

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

(3)Show View Frames/Show Alignment Rectangles用来显示视图元素的frame或对齐矩形,个人一般用show View Frames这一选项,最后屏幕上各个UI元素周围会多出一个矩形,代表其尺寸大小,对一些元素之间布局显示异常的情况,有助于定位找到UI元素的约束设置问题。

iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging的更多相关文章

  1. iOS开发笔记1:[转]导航栏里的"Back"按钮显示不出来

    最近项目中遇到一个问题,push过去的ViewController的Nav上面没有返回按钮,遂搜索资料,找到了以下文档.经测试i,问题解决. 原文地址:http://www.cnblogs.com/s ...

  2. iOS开发——笔记篇&关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结

    关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 /************************************ ...

  3. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

  4. iOS开发之多表视图滑动切换示例(仿"头条"客户端)---优化篇

    前几天发布了一篇iOS开发之多表视图滑动切换示例(仿"头条"客户端)的博客,之所以写这篇博客,是因为一位iOS初学者提了一个问题,简单的写了个demo做了个示范,让其在基础上做扩展 ...

  5. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法   单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...

  6. Bootstrap学习笔记(二) 表单

    在Bootstrap学习笔记(一) 排版的基础上继续学习Bootstrap的表单,编辑器及head内代码不变. 3-1 基础表单 单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文 ...

  7. iOS开发笔记--什么时候调用layoutSubviews

    iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...

  8. IOS开发笔记(4)数据离线缓存与读取

    IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...

  9. IOS开发笔记 IOS如何访问通讯录

    IOS开发笔记  IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...

随机推荐

  1. 手机游戏渠道SDK接入工具项目分享(三)拨开云雾是个坑

    一直在纠结是先写框架设计还是先写掉过的坑,最后本这娱乐大众的态度先写掉过的坑让大家乐呵下. 项目开发过程中遇问题无数,回顾下8个大坑照成了项目一定程度上延期甚至返工. 项目一开始几个人把现有3家主流的 ...

  2. web Worker使js实现‘多线程’?

    大家都知道js是单线程的,在上一段js执行结束之前,后面的js绝对不会执行,那么为什么标题说js实现‘多线程’,虽然说加了引号,可是标题也不能乱写不是,可恶的标题党? 姑且抛开标题不说,先说我们经常会 ...

  3. java读取properties配置文件总结

    java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...

  4. MyCalView.php

    <html> <head> <title>我的计算器</title> <script language="javascript&quot ...

  5. 2016 Sichuan Province Programming Contest

    2016 Sichuan Province Programming Contest 代码 2016 Sichuan Province Programming Contest A. Nearest Ne ...

  6. Oracle EBS 入门

    Oracle EBS 入门Oracle EBS全称是Oracle 电子商务套件(E-Business Suit),是在原来Application(ERP)基础上的扩展,包含ERP(企业资源计划管理). ...

  7. BZOJ 1370&colon; &lbrack;Baltic2003&rsqb;Gang团伙 &lbrack;并查集 拆点 &vert; 种类并查集WA&rsqb;

    题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...

  8. C&num;高级编程9-第7章 运算符和类型强制转换

    运算符和类型强制转换 1.运算符 运算符的简化操作 条件运算符: if-else的简化操作,也称三元运算符.如果条件为真,返回一个值,为假返回另外一个值. condition?true_value:f ...

  9. 【CSS】等高布局

    1. 负margin:   margin-bottom:-3000px; padding-bottom:3000px; 再配合父标签的overflow:hidden属性即可实现高度自动相等的效果.   ...

  10. Ubuntu下安装配置和卸载Tomcat

    转载自:http://zyjustin9.iteye.com/blog/2177291 注:此处不采用apt-get安装,因为这种方式安装后,tomcat安装目录会到处都是,像天女散花一样.此处采取下 ...