iOS12 使用相機(jī)或相冊導(dǎo)致同一個(gè)控制器中的WKWebView的交互失效

最近在項(xiàng)目中遇到一個(gè)讓人頭痛的bug,查遍網(wǎng)上都沒找到,因?yàn)楸卷?xiàng)目中必須用到交互和上傳相片,最后只能自己挨著挨著的排除測試。

出現(xiàn)問題的場景:

在同一個(gè)控制器中的WKWebView頁面中使用相機(jī)或者相冊后,所有的交互便失效了?;赝撕蟮膚eb頁面也同樣失效。當(dāng)退出再重新進(jìn)入控制器,即創(chuàng)建了新的WKWebView頁面,其他的交互又才可以用。

排除的問題及解決辦法:

  1. 相機(jī)相冊的使用權(quán)限問題
    ① 檢查info.plist中是否添加以下兩條權(quán)限
    相機(jī) Privacy - Photo Library Usage Description
    相冊 Privacy - Camera Usage Description
    ② 在訪問時(shí),權(quán)限是否生效,若未生效,則通過<Photos/Photos.h>中的PHAuthorizationStatus類來手動設(shè)置
  PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus];
        if (authorizationStatus == PHAuthorizationStatusAuthorized) {
            //從相冊中讀取照片
            [self readImageFromAlbum];
            
        } else {
            if (authorizationStatus == PHAuthorizationStatusNotDetermined) {
                [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { //彈出訪問權(quán)限提示框
                    if (status == PHAuthorizationStatusAuthorized) {
                        //從相冊中讀取照片
                        [self readImageFromAlbum];
                    } else {
                        //顯示無權(quán)限的提示
                    }
                }];
            } else {
                //顯示無權(quán)限的提示
            }
            
        }

同樣,此方法也用于解決此錯(cuò)誤:
[discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled};
在網(wǎng)上看到很多人通過設(shè)置環(huán)境變量OS_ACTIVITY_MODE為disable來解決此打印問題,但個(gè)人覺得這并沒有真正的解決問題,只是屏蔽打印而已。

  1. 經(jīng)測試發(fā)現(xiàn)不管是通過原生的UIImagePickerController還是H5的input來調(diào)用相機(jī)或相冊,只要進(jìn)入相機(jī)或相冊,就會導(dǎo)致與WKWebView的交互失效。
    最后換成UIWebView測試,終于發(fā)覺使用相機(jī)或相冊不影響UIWebView的交互了,雖然UIWebView的性能沒有WKWebView好,但為了解決此問題暫時(shí)退而求其次。

總結(jié):

ios12使用相機(jī)或相冊的系統(tǒng)類與WKWebView的交互類有沖突。

若找到更好解決辦法,我會在后面更新;若你也遇到同樣的問題,或有更好的解決方法,也希望可以留言相互交流學(xué)習(xí)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容