NSTextView
にテキストを入力したいので、NSTextView
がカーソルを元の位置に戻してクリアするようにテキストを入力します。入力したテキストは、NSView
のdrawRect
を使用して画面に表示されます。NSTextViewから文字列を取得してからカーソルを先頭に戻す
これは私が現在動作していないものです。基本的にself.outputString
は、描画してからクリアしても常に現在の値の[textview string]
です。下のコードは文字列を画面に描画しません。もし私が[textview setString:@""]
を取り除くと、現在のテキストは私が何を書いているのかを常に示しています。あなたはNSTextDelegate
protocolによって宣言されたデリゲートメソッドのいくつかの利点を取ることができるように
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor whiteColor] setFill];
NSRectFill(dirtyRect);
// Drawing code here.
NSPoint point = NSMakePoint(50.0f, 700.0f);
NSMutableDictionary *font_attributes = [[NSMutableDictionary alloc] init];
NSFont *font = [NSFont fontWithName:@"Futura-MediumItalic" size:35.0f];
[font_attributes setObject:font forKey:NSFontAttributeName];
[self.outputString drawAtPoint:point withAttributes:font_attributes];
[font_attributes release];
}
- (BOOL)textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector {
[self enterPressed:[textView string]];
[textView setString:@""];
NSRange range = { 0, 0 };
[self.textView setSelectedRange: range];
return YES;
}
- (void) enterPressed:(NSString*)stringEntered
{
NSLog(@"enter pressed with string: %@", stringEntered);
self.outputString = stringEntered;
[self setNeedsDisplay:YES];
}
はい、drawRectが確実に呼び出されます。どのようなNSTextオブジェクトを参照していますか?これはNSTextViewです。明確にできますか? –
['NSTextView'は' NSText'(http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextView_Class/Reference/Reference.html)から継承しています。あなたが指定した代理人が 'textDidChange:'通知を得るでしょう。 –
これを使って遊んだことがあり、テキストを変更したときに検出されたようですが、復帰時には検出されません。代わりにNSTextFieldを使用する必要があるかどうかは疑問です。あなたは間違いなく助けましたが、残念ながら私はまだ少し失われています。 –