文書内の検索は主にPDFDocumentクラスの仕事。メソッドはこんな感じ。
– findString:withOptions:
– beginFindString:withOptions:
– beginFindStrings:withOptions:
– findString:fromSelection:withOptions:
– isFinding
– cancelFindString
findString以外は「検索ボックスで逐次マッチした部分を表示する」タイプの検索用らしい。まずはTableViewにHitしたページを表示するような検索から始めたいので、findStringの挙動から調べることにする。
Toolbarに配置したSearchFieldで検索語が入力されると、beginSearch:が呼ばれる。ここでいちおう注釈をたれておけば、InterfaceBuilderで「SendsWholeSearchString」(リターンキーが入力されてから初めてactionが呼ばれる、という設定)にチェックを入れておいても今のところちゃんと働かないようだ。Xcode4のbugかしらん。ソース上でawakeFromNibあたりで明示的に
[[searchFieldOutlet cell] setSendsWholeSearchString:YES];
としておくのが吉・・・って今これを書いていて気づいたけど、InterfaceBuilder上でちゃんとsearchFieldのcellを選択してたかな。cellを選択してないとだめな気がする。(^^;)
actionは今のところこれしか書いていない。
-(void)beginSearch:(id)sender{ NSArray* seledted=[[pdfView document] findString:[sender stringValue] withOptions:NSCaseInsensitiveSearch]; }実はこの後ろに、渡されたNSArrayの中がどうなっているかNSLogで調べているコードが続くんだけどそれは割愛。
NSArrayはPDFSelectionの配列。というわけでこいつをどうやって利用するのか、明日の勉強でございますな。デベロッパドキュメントのあちこちを調べている時間が長い。Xcode4になって、デベロッパドキュメントがちょっと読みにくくなった気がするなあ。こっちもTabインターフェイスにしてくれたら並行していろいろなクラスを参照できるのに。
PDFkitについて日本語の情報があまり(ほとんど?)ないのがこれまたつらい原因。全て手探りしていくしかないけれど、ま、それがおもしろいんだな。
0 件のコメント:
コメントを投稿