2013-01-14 7 views
2

내 응용 프로그램에 간헐적 인 충돌이 발생합니다. 크래시 로그는 UITextField의 resignFirstResponser가 호출되는 방식에 문제가있는 것으로 생각됩니다. 난 간헐적으로 충돌이 발생하는 내 사용자 정의 tableview 셀에 UITextField 및 UITextFieldDelegate 프로토콜 메서드를 사용하고 있습니다. 아래의 충돌 로그를 게시하고 있습니다. 충돌의 근본 원인을 이해하는 데 도움이되는 제안이나 의견을 제시해주세요. 또한 대부분 iOS 6에서 충돌이 발생한 것 같습니다.사용자 지정 UlTableViewCell에서 UITextField를 사용하는 동안 resignFirstResponder가 충돌합니다.

감사합니다. 그것은 당신의 필터 데이터를 업데이트 할 때처럼 보인다

 

    0 libobjc.A.dylib 0x39d585b0 objc_msgSend + 16 + 15 
    1 UIKit 0x3477f165 -[UITextField _resignFirstResponder] + 457 + 456 
    2 UIKit 0x34664249 -[UIResponder resignFirstResponder] + 281 + 280 
    3 UIKit 0x34712397 -[UITextField resignFirstResponder] + 147 + 146 
    4 UIKit 0x346962f5 -[UITableView reloadData] + 225 + 224 
    5 BF 0x0008ed37 -[BFOpenBetsController updateFilterData] (BFOpenBetsController.m:768) 
    6 BF 0x0008d695 -[BFOpenBetsController deleteBet:] (BFOpenBetsController.m:566) 
    7 BF 0x00094fbd -[BFOpenBetsUnMatchedCell userTapOnButton:] (BFOpenBetsUnMatchedCell.m:198) 
    8 UIKit 0x347380a5 -[UIApplication sendAction:to:from:forEvent:] + 73 + 72 
    9 UIKit 0x34738057 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31 + 30 
    10 UIKit 0x34738035 -[UIControl sendAction:to:forEvent:] + 45 + 44 
    11 UIKit 0x347378eb -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 + 502 
    12 UIKit 0x34737de1 -[UIControl touchesEnded:withEvent:] + 489 + 488 
    13 UIKit 0x34656421 _UIGestureRecognizerUpdate + 5769 + 5768 
    14 CoreFoundation 0x351536cd __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21 + 20 
    15 CoreFoundation 0x351519c1 __CFRunLoopDoObservers + 277 + 276 
    16 CoreFoundation 0x35151d17 __CFRunLoopRun + 743 + 742 
    17 CoreFoundation 0x350c4ebd CFRunLoopRunSpecific + 357 + 356 
    18 CoreFoundation 0x350c4d49 CFRunLoopRunInMode + 105 + 104 
    19 GraphicsServices 0x32a172eb GSEventRunModal + 75 + 74 
    20 UIKit 0x346a12f9 UIApplicationMain + 1121 + 1120 

+0

충돌의 시나리오는 무엇입니까? 스크롤링을 표시하거나 스크롤 한 후에 충돌이 발생합니까? –

+0

@AkshayShah : 사실, 이것은 크리티컬 로그입니다. 사용자가 라이브 버전에서 그것을 볼 수 있습니다, 나는 그것을 재현 할 수 없기 때문에 간헐적 인 문제처럼 보입니다. 필자의 이해는 tableView가 나중에 다시로드 될 때 언젠가 초기 데이터 표시 후 구걸하는 것이 아니라 tableView를 스크롤하거나 업데이트하는 것과 같은 일이 일어나는 경우입니다. 다시 한 번 스크롤해도 항상 충돌하지 않습니다. 그래서 내 생각은 내 textField가 선택되고 tableView가 다시로드되거나 다시 로그에서 벗어나려는 것이 확실하지 않습니다. –

답변

0

UITextField 중 하나가 할당 취소 될 수 있습니다 (보기가 벗어나거나보기를 다시로드 할 때처럼). TextField 델리게이트를 보았을 때 필드가 더 이상 존재하지 않는다는 것을 알았 기 때문에 First Responder를 사임 할 때 충돌합니다.

해결책은 사용자 정의 셀의 dealloc 루틴에서 uitextfield setDelegate : nil을 호출하는 것입니다.

https://stackoverflow.com/a/9484805/899996

0

, 당신이있는 tableview 일부 UITextField 편집 모드에있는 그 시간을 다시로드 : 다음

Crittercism 충돌 로그입니다. 이런 식으로 재현 해보십시오.

이것이 문제인 경우 reloadDataUITableView에 전화하기 전에 UITextField의 모든 활성에 resignFirstResponder을 시도해보십시오.