ios項(xiàng)目開發(fā)中遇到的坑(二)

這篇文章主要分享一下最近項(xiàng)目中遇到的問題和實(shí)際的解決方案的分享,還有一款小插件的分享,希望對遇到同類問題的作者有所幫助。

問題一

  • 使用WebView加載網(wǎng)頁時(shí)候進(jìn)行加載時(shí)候,如果出現(xiàn)網(wǎng)絡(luò)請求緩慢,并且使用MBProgressHub進(jìn)行動畫處理,會出現(xiàn)以下情形:
  • 情形一:使用[MBProgressHub showMessage:""]
    使用這個(gè)方法你會出現(xiàn)這個(gè)情況
    整個(gè)屏幕被覆蓋

這樣的話用戶無法操作,只能殺死程序重新開啟程序,用戶體驗(yàn)極差

  • 情形二:使用[MBProgressHub showMessage:@"" toView:self.view]
    只覆蓋導(dǎo)航欄以下的屏幕

    這樣體驗(yàn)較情形一較好,用戶可以使用返回鍵返回,體驗(yàn)一般般。

針對這個(gè)問題首先想到的是WebView有沒有個(gè)屬性可以提供我設(shè)置超時(shí)請求,找了一遍沒有,那么WebView load 是一個(gè)request,那么肯定有設(shè)置請求超時(shí)的操作,果然發(fā)現(xiàn)以下方法

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:_webViewUrl] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5.0];

webView的代理方法中

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    NSLog(@"%@",error.userInfo);
    [MBProgressHUD hideHudWithMessageError:error.userInfo[@"NSLocalizedDescription"]];
    [MBProgressHUD hideHUDForView:_webView];
    
}

這樣的就處理webView中的超時(shí)請求

提示請求超時(shí)

問題二

  • 定時(shí)器NSTimer使用出現(xiàn)的問題:在做獲取驗(yàn)證碼操作時(shí)候倒計(jì)時(shí)出現(xiàn)負(fù)數(shù),原因未能正確處理定時(shí)器造成。
-(void)setUpTimer
{
    self.timeLable.text = @"59s";
    self.sendBtn.hidden = YES;
    self.timeLable.hidden = NO;
    self.timeIndex = 59;
    
    //設(shè)置定時(shí)器
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(elapsedTimer) userInfo:nil repeats:YES];
//這句代碼非常重要,否則會造成未知的錯(cuò)誤
    [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
}
//執(zhí)行倒數(shù)器
-(void)elapsedTimer
{
    self.timeIndex = self.timeIndex - 1;
    if (self.timeIndex < 0) {
        self.timeLable.hidden = YES;
        self.sendBtn.hidden = NO;
        [self timerEndRunning];
    }else
    {
        self.timeLable.text =[NSString stringWithFormat:@"%ds",self.timeIndex];
    }
}

// 結(jié)束倒數(shù)器
- (void)timerEndRunning
{
    if (self.timer != nil) {
        [self.timer invalidate];
        self.timer = nil;
    }
}

在處理發(fā)送驗(yàn)證碼按鈕發(fā)送后顯示暗色有兩種方法,第一種將按鈕設(shè)置為不能點(diǎn)擊然后將按鈕的背景色設(shè)置為灰色,第二種是創(chuàng)建按鈕的時(shí)候設(shè)置圖片的UIControlStateDisabled下的圖片,以上兩種的都可以。

你以為上面定時(shí)器就處理完成了嗎?當(dāng)你銷毀界面的時(shí)候,你會發(fā)現(xiàn)delloc并未調(diào)用,實(shí)際上當(dāng)控制器出棧的時(shí)候,并未銷毀,什么原因呢,原因是你在發(fā)送驗(yàn)證碼倒計(jì)時(shí)過程的定時(shí)器并未銷毀和停止!?。?br> 所以正確的邏輯應(yīng)該是:

- (void)viewDidDisappear
{
  if(self.timer != nil)
  [self.timer invalid];
   self.timer = nil;
}

記得一定先invalidnil,否則你會后悔的。

最后給大家分享一個(gè)模擬低網(wǎng)速的插件,其實(shí)蘋果官方已經(jīng)給我們提供了這樣的插件,我們?nèi)ヌO果官網(wǎng)下載就可以了

具體地址見下圖:

請點(diǎn)擊More Developer Tools...

這個(gè)地址是需要賬號登錄的,沒有的伙伴申請一個(gè)即可。


紅線部分即需要下載工具

個(gè)人點(diǎn)擊下載最新的Xcode 7.3告訴我沒有權(quán)限,所以我就下載了7.1,前提說明我的Xcode是7.3,安裝后正常使用。

紅色下劃線的插件

點(diǎn)開后

點(diǎn)擊Mangerprofiles選擇你需要的場景

這樣就可以在模擬器上模擬相應(yīng)的網(wǎng)絡(luò)狀態(tài)了。

問題三 (補(bǔ)充)

更新于2016.6.21日

我們會遇到這種問題:

這種是使用[UIImage imageName:]這個(gè)方法未找到對應(yīng)的圖片引起的,如果是一個(gè)新的項(xiàng)目是不會出現(xiàn)這個(gè)問題的,因?yàn)槟愕膱D片你都是確定的,當(dāng)我們要套用舊的項(xiàng)目開始一個(gè)新的項(xiàng)目的時(shí)候最容易出現(xiàn),但是我們不可能一一去找到底在哪里,給大家分享一個(gè)簡易的方法。

增加一個(gè)方法的斷點(diǎn),運(yùn)行項(xiàng)目查找,更改后重新運(yùn)行,問題就會消失。

  • 千萬別打賞我,我害羞。。。。
最后編輯于
?著作權(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)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,328評論 4 61
  • 曾有小友問: 一、去年暑假我曾經(jīng)去過工地實(shí)習(xí)一個(gè)月,發(fā)現(xiàn)了一個(gè)殘酷事實(shí),工地上文化程度最高的大學(xué)生卻是工資最低的。...
    四十有獲閱讀 661評論 1 0
  • 我們就這樣,各自奔天涯 -------《那些花兒》樸樹 圖片發(fā)自簡書App 沈萌是在大胡同里長起來的孩子。正午各家...
    卉斗子閱讀 339評論 0 0
  • 當(dāng)當(dāng)當(dāng)當(dāng),當(dāng)當(dāng)當(dāng)當(dāng),當(dāng)當(dāng)當(dāng)當(dāng),當(dāng)當(dāng)當(dāng)當(dāng)。。。。 愉快的結(jié)婚進(jìn)行曲,有節(jié)奏的響著,一位濃...
    一把琵琶笑江湖閱讀 682評論 0 3

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