自定义Alert和系统Alert或ActionSheet或Key
2019-03-15 本文已影响0人
sky_storming
-
问题描述:
需求通知弹窗要自定义,在测试的时候发现的问题:
第一种情况,如果有系统Alert或者ActionSheet,正好在这时有通知消息推送过来,自定义弹窗覆盖在系统的弹窗上,这时点击任何地方自定义弹窗都没有点击事件响应(自定义弹窗加在window上的)。
第二种情况,如果自定义弹窗和键盘同时出现,键盘在上自定义弹窗在下,点击弹窗无响应,键盘也下不去。这两种情况都导致卡死了。 -
解决办法:
- 自定义弹窗的按钮点击事件不添加addTarget,而是通过
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
方法,确定点击的是自定义弹窗的按钮,调用按钮相关事件方法。这个方法一般会走两次,需要一个flag标记一下,调用方法时只走一次。 - 弹窗弹出前让键盘失去第一响应。