我不確定這個錯誤是否真的來自我的應用程序,或者可能確實是一個UIKit錯誤。也許這裏有人可以澄清這一點。這是一個UIKit錯誤嗎?
有一個tableview。每個單元格都向類似「設置」的屏幕提供泄露按鈕,這是一種模態視圖。模態視圖可以通過「關閉」按鈕關閉。
模態視圖包含UITextView。
現在這裏出現bug: 用戶持有提供相似字符的密鑰(例如:a - >äáà...)。當用戶拿着那個鑰匙時,角色被提供並且第一個被選擇藍色。如果用戶持有此按鈕並同時單擊「關閉」按鈕。模態視圖消失,表格視圖出現。鍵盤消失了,但{aáäà}菜單仍然可見約一秒。然後,應用程序崩潰。
由於無法同時按兩個按鈕,因此只能在設備上進行復制。
這裏是一個堆棧跟蹤
Date/Time: 2009-12-01 17:39:31.048 +0100
OS Version: iPhone OS 3.0.1 (7A400)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x300102ac objc_msgSend + 16
1 UIKit 0x308ffda0 -[UIKeyboardImpl hasMarkedText] + 20
2 UIKit 0x309161b2 -[UIKeyboardImpl updateShiftState] + 230
3 UIKit 0x309224c0 -[UIKeyboardImpl handleObserverCallback] + 72
4 UIKit 0x30922466 observerCallback + 14
5 CoreFoundation 0x3020bf38 __CFRunLoopDoObservers + 420
6 CoreFoundation 0x30252e46 CFRunLoopRunSpecific + 1734
7 CoreFoundation 0x3025276a CFRunLoopRunInMode + 42
8 GraphicsServices 0x32044b08 GSEventRunModal + 108
9 GraphicsServices 0x32044bb4 GSEventRun + 56
10 UIKit 0x308f035c -[UIApplication _run] + 384
11 UIKit 0x308ef11a UIApplicationMain + 694
12 **** 0x00002360 main (main.m:14)
13 **** 0x000022fc start + 44
Thread 1:
0 libSystem.B.dylib 0x31d47624 semaphore_wait_signal_trap + 8
1 libSystem.B.dylib 0x31d702de semaphore_wait_signal + 2
2 libSystem.B.dylib 0x31d49c9c pthread_mutex_lock + 284
3 WebCore 0x35866fa6 __ZL17_WebTryThreadLockb + 98
4 WebCore 0x35866f22 __ZL14WebRunLoopLockP19__CFRunLoopObservermPv + 14
5 CoreFoundation 0x3020bf38 __CFRunLoopDoObservers + 420
6 CoreFoundation 0x30252db0 CFRunLoopRunSpecific + 1584
7 CoreFoundation 0x3025276a CFRunLoopRunInMode + 42
8 WebCore 0x35866ed2 __ZL12RunWebThreadPv + 286
9 libSystem.B.dylib 0x31d6a6ea _pthread_body + 10
你有沒有試過這對最新的iPhone操作系統?另外,帶有披露單元格的表格視圖不應該在點擊時使用模態方法(我敢打賭,Apple會將這個標記爲UI違規),而是使用導航控制器將下一個(詳細)視圖推到從側面堆疊。 – 2009-12-02 21:16:36