9

一般に動作する検索バーがあります。問題は、私がiPhone上でテストしたときに起こるオートコレクトの刻みである。私は、長さが4以上のクエリバーにテキストがあると、searchResults配列に物事を入れ始めるように設定されている。オートコレクトの提案があり、それを無視して配列から何かを選択すると、アプリケーションがクラッシュします。私は、行選択の前に自動修正された単語が選択されているという事実にエラーを辿りました(しかし、どちらも完了します)ので、私がアクセスしていたと思ったsearchResults配列はもはや有効ではありません。didSelectRowAtIndexPathをヒットしたときにUISearchBarのオートコレクトが干渉します。

たとえば、私は検索バーに「demp」を入れます。自動修正は「デモ」を提案します。その間に、検索結果には「デンプスター」という結果が表示されます。私は最初を選択します。私がこれを行うと、検索は「デモ」の下で再検索し、元の配列を消去します(配列が再充填されないように、検索のためにサーバを探します)。その後、didSelectRowAtIndexRowメソッドがトリガされ、配列に何もないので、クラッシュします。

どのような考えですか?前もって感謝します。

+0

私は同じ問題を抱えていました。私はこれがUISearchBarのバグだと言います。 – hpique

答えて

16

検索バーを使用しているため、ユーザーは自己訂正をしてはいけません。ユーザーは探しているものを見つけたいと思っています。単に設定してください

searchBar.autocorrectionType = UITextAutocorrectionTypeNo; 

問題が解決されます。

+0

それは私のために十分です!ありがとうございました! –

+0

私は自己補正をしてはならないということに同意しません。それがiOSのようにそれほど邪魔でないなら、それは役に立つだろう。 – hpique