« Intermezzo 0.9.1 | ホーム | RT58iをもう一度使ってみるよ »
2009年4月 9日
Safari(or WebKit?)からNSTextFieldへのURL貼付け
こんどはNSTextField/NSTextViewについての話。SafariからNSTextFieldにリンクやアドレスバーをドラッグ&ドロップなどして貼付けようってときに、Interface Builder上で"Rich Text"がオン(実際のプロパティではどれになるんだろ。allowsEditingTextAttributesとかimportGraphicsとか?)になっていると、URLではなくそのページのタイトルなどが出てきてしまう現象に対して。
この場合、編集中の状態にあるNSTextFieldに対してのオペレーションになるので、Field EditorであるNSTextViewに実際はメッセージが行くことになる。ペースト時にNSTextViewが受け取るのは[NSTextView readSelectionFromPasteboard:type:]メソッドなので、ここでtypeを調べ、SafariからのURLペーストであった場合にはURLを拾うよう明示するのである。
- (BOOL)readSelectionFromPasteboard:(NSPasteboard*)pboard type:(NSString*)type
{
NSLog(@"pasteboard = %@ / type = %@", pboard, type);
NSRange r = [self rangeForUserTextChange];
if ([type isEqual:@"WebURLsWithTitlesPboardType"]) {
NSArray *urls = [[pboard propertyListForType:type] objectAtIndex:0];
[self replaceCharactersInRange:r withString:[urls componentsJoinedByString:@" "]];
return YES;
}
return [super readSelectionFromPasteboard:pboard type:type];
}
このメソッドをカテゴリ使って直接NSTextViewにくっつけるか、もしくはこのメソッドを持つNSTextViewの子クラスを定義し、そのインスタンスを[NSWindow windowWillReturnFieldEditor:toObject:]で渡してやるとかすればよいですな。
トラックバック(0)
トラックバックURL: http://foursics.jp/cgi-bin/mt/mt-tb.cgi/253
コメントする