1.表单键盘遮挡

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

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

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

(1)选择输入项时记下indexPath,方便后续collectionView滑动操作

这里需要注意的是,collectionViewCell里textField、textView的userInteractionEnabled都设置为NO,在用户选中时才成为第一响应者。

(2)获得键盘高度,根据键盘高度对collectionView调整,并滑动到目标cel的位置

(3)键盘隐藏时,恢复collectonView的初始约束

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

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

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

3.省市区选择器

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

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

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

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

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

(2)三级联动

即省/直辖市改变,市、区/县也要跟着改变,通过更新对应数据集合即可,这里做的是省/直辖市改变,市、区/县默认滚动到第一条显示,市改变,区/县默认滚动到第一条显示。

(3)内容样式修改

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

4.View Debugging

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

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

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

(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. AssetBundle系列——场景资源之打包(一)

    本篇讲解的是3D游戏的场景资源打包方式,首先简单的分析一下场景中所包含的资源的类型. 场景资源一般包含:地表模型(或者是Unity Terrain),非实例化物体(摄像机.空气墙.光源.各种逻辑物体之 ...

  2. 0x00411202指令引用的0x00000000内存该内存不能为read错误,怎么解决

    0X000000该内存不能为read的解决方法 出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了. 一.先说说硬件问题,主要方面是: 1.内存条坏了 更换内存条 2.双 ...

  3. GPUImage滤镜之自然饱和度

    自然饱和度”是图像整体的明亮程度,“饱和度”是图像颜色的鲜艳程度. “饱和度”与“色相/饱和度”命令中的“饱和度”选项效果相同,可以增加整个画面的“饱和度”,但如调节到较高数值,图像会产生色彩过饱和从 ...

  4. percona-toolkit介绍及安装

    percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,包括: 1. 检查master和slave数据的一致性 2. 有效地 ...

  5. SpringMVC核心——返回值问题

    一.SpringMVC 使用 ModelAndView 来处理返回值问题. 1.ModelAndView 官方描述: Holder for both Model and View in the web ...

  6. CheckListBox的实现方式分析

    实际项目中常常要实现有CheckBox列表框.但是WPF没有自带这样的一个控件,下面就用Style来实现这样的功能.而对于CheckBox列表框,又常常会有一个Select All的CheckBox来 ...

  7. MIUI选项框开关样式模拟

    有IOS的开关模拟,当然也有MIUI的开关模拟 看到设置选项里面的开关样式,突发奇想地来试试    最终效果如图: 实现过程 1. 选项框checkbox 模拟开关当然需要一个选项框,这里用到了复选框 ...

  8. P6 EPPM Installation and Configuration Guide 16 R1 April 2016

    P6 EPPM Installation and Configuration Guide 16 R1         April 2016 Contents About Installing and ...

  9. 环信SDK与Apple Watch的结合(3)

    第3章主要介绍怎样在Watch App的页面上显示iPhone程序里的数据.主要操作的是“EMWatchOCDemo WatchKit Extension”这个文件夹,附源码EMWatchOCDemo ...

  10. macbook装双系统多分区其实很简单,你只要把macbook当作一台普通pc就可以了!

    macbook装双系统多分区其实很简单,你只要把macbook当作一台普通pc就可以了! 不用理会苹果官网的警告,苹果官网警告你只能用bootcamp安装且不能多分区,把人吓得不轻.其实不用过多担心, ...