解决表单被键盘遮住的问题

问题

处理表单的时候,一定会碰到的就是输入控件被键盘遮住的问题,如图:

实例

左边是普通表单,中间是2B表单,右边是文艺表单.

分析

处理这种问题无非就是2个步骤:

  1. 键盘弹出时,缩小UITableViewframe
  2. 滚动UITableView,让当前输入的控件可见

代码写出来就是这几步

  1. 捕获键盘事件
  2. 计算键盘高度并调整UITableViewframe
  3. 获取当前正在输入的控件
  4. 计算其在UITableView中的位置,并滚动到其位置让其可见

那么如何一步一步的来实现这些步骤呢?

閱讀全文

如何从多重 modalViewController 中直接返回最底层

ModalViewController是经常会用到的展现ViewController的方式,而显示和收起ModalViewController也是很简单的

1
2
3
4
5
6

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0);
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion NS_AVAILABLE_IOS(5_0);

- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 6_0);
- (void)dismissModalViewControllerAnimated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 6_0);

但是有的时候我们的需求很特殊,比如在一个ModalViewController里要present另一个ModalViewController,甚至再present一个ModalViewController,然后可能在某个时候APP发出一条消息,需要一下子dismiss掉所有的ModalViewController(比如你在使用过程中,突然APP检测到你的登录状态异常,需要重新登录,这个时候所有的页面都需要消失),这时候该如何办呢?

正巧我现在正在做的项目遇到了这个问题,所以研究了一下,得到了以下的解决办法:

閱讀全文

个人总结的一些 APP 的代码实践

建立一个辅助的APP类,减少对AppDelegate的修改

最开始接触iOS开发的时候,如果需要一些全局变量或者全局函数的时候,总是直接在AppDelegate中添加,因为AppDelegate可以直接获取

1
[UIApplication sharedApplication].delegate

但是时间长了还是觉得这样不太好,AppDelegate本身有其自己的作用(对于App本身的一些事件进行处理,如启动,切换,推送),这样做感觉怪怪的,所以还是自己弄一个专门处理我们所需的全局变亮或者全局函数的对象会更好一些

閱讀全文

NimbusKit 介绍与使用实践

介绍

NimbusKit 官网
NimbusKit 源码

NimbusKit是一组用于快速开发的iOS框架,是源自Facebook的著名框架Three20的替代者,包括下面几大类的功能

  • Attributed Label - 富文字Label
  • Badge - 数字角标
  • Interapp - 应用间交互
  • Launcher - 类桌面启动器
  • Network Image - 网络图片下载显示
  • Photo Albums - 相册
  • Web Controller - 浏览器
  • Table Models - 表格数据模型
  • Overview - 直观方便的调试分析内嵌图形工具
  • 等…

NimbusKit的demo很直观,编译运行以后就可以体验其强大的功能了

Nimbus Demo

閱讀全文