禁止UIAlertController的dimiss
标签: objectvie-c Runtime UIAlertController是在iOS 8.0以后才出现的,用于弹窗提示的视图,在8.0 之前使用的是UIAlertView。UIAlertController有两种模式:Alert和Sheet。只有在Alert模式下,才可以向UIAlertController中添加UITextField,否则会崩溃。默认情况都是点击UIAlertController上的按钮之后,执行相应回调最后dismiss掉。在没有UITextField的时候,这样没有任何问题,但是在UITextField存在的情况下,且需要对输入进行合法性验证,只有输入合法时点击UIAlertController才进行回调处理。按照系统的默认方式在点击UIAlertController按钮时流程为: 如果输入合法,执行处理回调;如果输入不合法,给出提示,不执行回调。 UIAlertController dismiss 这里不管输入合法与否,都是会dismiss,如何做到输入不合法,不dismiss,直到输入合法才dismiss。目前能想到的只有两种方法: 自己重写一个UIAlertController,好处是可以根据实际需求灵活配置,包括大小,颜色之类的,坏处是工作量比较大。 从系统UIAlertController入手,根据方法调用过程hook相关方法。