2015-11-05 72 views
1

我有這個登錄屏幕,在iOS9之前工作正常。鍵盤上有一個Next按鈕,用於從用戶名字段到密碼字段,還有一個用於解除鍵盤的完成按鈕。但是,在iOS 9上它崩潰了。我在8.4上測試過它,它工作。在iOS 9.0和9.1上崩潰。iOS9鍵盤崩潰

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if (textField == usernameField) { 
     [passwordField becomeFirstResponder]; 
    } else if (textField == passwordField) { 
     [textField resignFirstResponder]; 
    } 
    return NO; 
} 

我正確設置了委託。

所以基本上,當我按「下一步」或「完成」 崩潰:

CoreFoundation`__CFTypeCollectionRetain: 
    0x2239dd5c <+0>: push {r4, r5, r7, lr} 
    0x2239dd5e <+2>: add r7, sp, #0x8 
    0x2239dd60 <+4>: mov r4, r1 
    0x2239dd62 <+6>: cbz r4, 0x2239ddc4   ; <+104> 
    0x2239dd64 <+8>: ldrd r0, r1, [r4] 
    0x2239dd68 <+12>: cmp r0, #0x0 
    0x2239dd6a <+14>: ubfx r1, r1, #0x8, #0xa 
    0x2239dd6e <+18>: beq 0x2239dda2    ; <+70> 
    0x2239dd70 <+20>: movw r2, #0x7254 
    0x2239dd74 <+24>: movt r2, #0x14d1 
    0x2239dd78 <+28>: add r2, pc 
    0x2239dd7a <+30>: ldr r2, [r2] 
    0x2239dd7c <+32>: cmp r0, r2 
    0x2239dd7e <+34>: beq 0x2239dda2    ; <+70> 
    0x2239dd80 <+36>: movw r2, #0x6240 
    0x2239dd84 <+40>: movt r2, #0x14d1 
    0x2239dd88 <+44>: add r2, pc 
    0x2239dd8a <+46>: ldr.w r5, [r2, r1, lsl #2] 
    0x2239dd8e <+50>: cmp r0, r5 
    0x2239dd90 <+52>: beq 0x2239dda2    ; <+70> 
    0x2239dd92 <+54>: tst.w r0, #0x1 
    0x2239dd96 <+58>: beq 0x2239ddae    ; <+82> 
    0x2239dd98 <+60>: mov r0, r4 
    0x2239dd9a <+62>: blx 0x2243208c    ; symbol stub for: -[__NSFileSecurity getGroup:] 
    0x2239dd9e <+66>: cmp r0, r5 
    0x2239dda0 <+68>: bne 0x2239ddae    ; <+82> 
    0x2239dda2 <+70>: mov r0, r4 
    0x2239dda4 <+72>: movs r1, #0x0 
    0x2239dda6 <+74>: pop.w {r4, r5, r7, lr} 
    0x2239ddaa <+78>: b.w 0x222e6ce8    ; _CFRetain 
    0x2239ddae <+82>: movw r0, #0x3256 
    0x2239ddb2 <+86>: movt r0, #0x13fb 
    0x2239ddb6 <+90>: add r0, pc 
    0x2239ddb8 <+92>: ldr r1, [r0] 
    0x2239ddba <+94>: mov r0, r4 
    0x2239ddbc <+96>: pop.w {r4, r5, r7, lr} 
    0x2239ddc0 <+100>: b.w 0x22430e10    ; objc_msgSend$shim 
    0x2239ddc4 <+104>: movw r0, #0x332e 
    0x2239ddc8 <+108>: movs r3, #0x0 
    0x2239ddca <+110>: movt r0, #0x1223 
    0x2239ddce <+114>: movw r2, #0x116d 
    0x2239ddd2 <+118>: add r0, pc 
    0x2239ddd4 <+120>: movt r2, #0xc 
    0x2239ddd8 <+124>: ldr r0, [r0] 
    0x2239ddda <+126>: add r2, pc 
    0x2239dddc <+128>: strd r2, r3, [r0, #8] 
-> 0x2239dde0 <+132>: trap 
    0x2239dde2 <+134>: nop  

的崩潰發生的符合「 - >」

我看到了這個帖子,但它沒有幫助: iOS9 dismissing keyboard causes crash

我真的可以用一些幫助搞清楚這一點。

提前致謝!

編輯: 我發現,這與我的UIFont類別提供的所有視圖與我的自定義字體有關。

+0

您是否啓用了異常斷點? – Avi

+0

嘗試過,但同樣的問題和相同的日誌 –

+1

你是否在做一些與字體不同尋常的事情?甚至可能更改任何文本字段上的字體? – Avi

回答

0

的sooo,解決方案似乎已經幾乎無關,與鍵盤。我有一個CustomFont,我通過創建一個UIFont類別來設置。在那個類中,我換出了一些方法將customFont提供給所有UI元素。不知何故,該應用程序運行良好,直到textField完成編輯,然後我propably交換了iOS 9更新後不存在的方法。通過評論這條線再次發揮作用。謝謝大家。

0

我想....

問題是用的UIViewController類

dealloc方法被重寫,以清理通知回調。

,它可能由於這一事實,[超級的dealloc]當時不叫(由於ARC限制)

解決方案造成在iOS 9崩潰 - 從類別中刪除dealloc方法的子類的UIViewController ... ..

+0

如果您點擊我的問題的聯繫,這正是它說那裏就像我提到的它並沒有幫助。 –

+0

@BlackMagic好的:-) – Raju

0

首先設置文本框的標籤,然後把這個代碼

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    NSInteger nextTag = textField.tag + 1; 
    // Try to find next responder 
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; 
    if (nextResponder) { 
     // Found next responder, so set it. 
     [nextResponder becomeFirstResponder]; 
    } else { 
     // Not found, so remove keyboard. 
     [textField resignFirstResponder]; 
    } 
    return NO; 
} 

希望這將幫助你偉大和你感到你的代碼更好的工作好。

如果你喜歡我的回答使接受並給予好評我的答案