隨手記幾個(gè)最近碰到的小問題
tips:如果有錯(cuò)誤互艾,或者有更好的詳細(xì)解答,請隨時(shí)聯(lián)系我進(jìn)行修改灰署。
1.webview在ATS開啟后的問題
雖然蘋果推遲了ATS開啟的時(shí)間局嘁,但遲早還是要開啟的。
請求都需要HTTPS這個(gè)就不多談了肴茄,這邊談一下webview的問題但指。
有些時(shí)候總會(huì)用webview去打開一些網(wǎng)站,甚至網(wǎng)站也會(huì)跳轉(zhuǎn)一些網(wǎng)站拦坠,結(jié)果就碰到了ATS被攔截的問題贞滨,這個(gè)時(shí)候怎么解決呢拍棕。
- 關(guān)閉ATS,就是在info.plist里
Allow Arbitrary Loads
設(shè)置為YES骄噪,然后和蘋果審核撕逼蠢箩。 - 在iOS10上可以使用
NSAllowsArbitraryLoadsInWebContent
和NSAllowsArbitraryLoadsForMedia
谬泌,以讓你的 app 中的 UIWebView、WKWebView 或者使用 AVFoundation 播放的在線視頻不受 ATS 的限制呵萨。 - 在iOS9以后使用SFSafariViewController去進(jìn)行加載潮峦。問題是接口太少勇婴,控制有點(diǎn)難度耕渴。
- 在info.plist里添加
NSExceptionDomains
齿兔,一個(gè)一個(gè)去去除ATS
這里借onevcat的一張圖
2.多行輸入框問題
UITextField只有一行分苇,沒有多行輸入医寿。而UITextView可以多行輸入,但沒有placeholder靖秩。
所以要UITextView允許多行輸入而且要有placeholder的話沟突,可以在內(nèi)部添加一個(gè)UILabel作為placeholder惠拭,然后添加observer觀察UITextViewTextDidChangeNotification,在輸入變換的時(shí)候進(jìn)行placeholder的UILabel的顯示和隱藏今野。
3.WKWebView的彈框
之前把UIWebView升級到WKWebView后發(fā)現(xiàn)罐农,比如alert彈框都顯示不出來了催什,查了文檔才發(fā)現(xiàn)蒲凶,原來是WKWebView的UIDelegate需要是實(shí)現(xiàn),才能去實(shí)現(xiàn)頁面內(nèi)的alert旋圆,comfirm灵巧,prompt方法抹沪,這樣也方便app自己內(nèi)部做自己的相關(guān)提示框融欧。如果不實(shí)現(xiàn)的話就沒有任何彈框。
4.關(guān)于模塊化組件化
以前我在小公司里噪馏,就2欠肾,3個(gè)人開發(fā),所以沒有模塊化(組件化)這回事董济,但大公司幾百上千個(gè)人開發(fā)App虏肾,這么多的人協(xié)作肯定需要各個(gè)部門各個(gè)模塊的化封豪,才能做到互不影響。
可以先看看我寫的(iOS架構(gòu)組件化)[http://www.reibang.com/p/2d89f55fc2c4]吹埠。
常用的就是URL Router的方式缘琅。比如蘑菇街的MGJRouter就很不錯(cuò)刷袍。這里推薦一篇文章樊展,講得很不錯(cuò):組件化架構(gòu)漫談专缠。