UINavigatableTextField で作成された文字ボックスがあります。各入力の後、レスポンダー キャラクターはその後継者に引き継がれる必要があります。奇妙なことに、最初の文字の入力中に、ユーザーが文字「Q」を入力すると、毎回異なる例外が発生します。
- EXC_BAD_ACCESS、または
- 2012-09-04 14:42:42.600 Kelime Oyunu[6350:707] -[WebScriptObjectPrivate isForShortcutConversion]: 認識されないセレクターがインスタンス 0x21b870 に送信されました 2012-09-04 14:42:42.606 Kelime Oyunu[6350:707] *終了アプリキャッチされない例外 'NSInvalidArgumentException' へ、理由: '-[WebScriptObjectPrivate isForShortcutConversion]: 認識されないセレクターがインスタンス 0x21b870 に送信されました'
投げられます。以下の例外を受け取る私のコード、 [next becomeFirstResponder] 行
- (void) moveToNextCharacter: (MBNavigatableTextField *) character
{
dispatch_async(dispatch_get_current_queue(),
^{
UIControl *next = [character nextField];
if(next == nil)
{
[character endEditing:YES];
}
else if ([next isKindOfClass:[UIButton class]])
{
[next sendActionsForControlEvents: UIControlEventTouchUpInside];
}
else
{
[next becomeFirstResponder];
}
});
}
どうすれば問題を解決できますか? 前もって感謝します。
編集 1: ゾンビが見つかりました [次の rejectFirstResponder] (@PhillipMills に感謝)
編集2:私の問題が原因であることが判明しました
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// Something done here...
// code block of evil zombie summoner
[textField setText:@"Some text"];
// Something else done here
}
Profile->Instruments->Zombies は、setText 中にいくつかのオブジェクトが解放されることを示しています (これは前の文字列だと思います)。
私はまだ問題を解決できません。私の目標は、上記の textField を新しいユーザー入力 (replacementString:) で更新することです。