正常情况下的实况文本,以微信举例,找一个输入框,长按会出现下图按钮(粘贴右边的),
点击这个按钮键盘会变成后置摄像头的内容,如下图
但不正常的情况是扫描页面会占满整个屏幕如下图
识别完之后,键盘显示异常成了空白,如下图
收键盘的时候,键盘却出现在了页面顶部
原因是控制器的模态展示代码问题,
代码里面把UIViewController 的 modalPresentationStyle方法给hook了,而且只返回了UIModalPresentationFullScreen,导致所有页面都是以全屏模式展示。
因此解决办法是
判断如果是文本识别的控制器,则调用系统自己的modalPresentationStyle,
代码如下
- (UIModalPresentationStyle)modalPresentationStyleS
{
if([self isKindOfClass:NSClassFromString(@"UISystemKeyboardDockController")]||
[self isKindOfClass:NSClassFromString(@"UIInputWindowController")]||
[self isKindOfClass:NSClassFromString(@"UIKeyboardCameraRemoteViewController")]||
[self isKindOfClass:NSClassFromString(@"UIKeyboardCameraViewController")]){
return [self modalPresentationStyleS];
}else{
}
return UIModalPresentationFullScreen;
}