Получить строку из NSTextView, затем вернуть курсор в начало - PullRequest
0 голосов
/ 20 января 2012

Я хотел бы ввести текст в NSTextView, чтобы, когда я нажимаю клавишу возврата, NSTextView очищался, а курсор возвращался в исходное положение.Затем введенный текст отображается на экране, используя drawRect из NSView.

. Это то, что у меня есть в настоящее время, и оно не работает.В основном self.outputString всегда является текущим значением [textview string], хотя я рисую, а затем очищаю.Текущий код ниже не рисует никакой строки на экране.Если я удаляю [textview setString:@""], то текущий текст всегда показывает, что я пишу.

- (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];
}

1 Ответ

2 голосов
/ 20 января 2012

Прежде всего, установите делегата для объекта NSText, чтобы вы могли воспользоваться некоторыми из методов делегата, объявленных протоколом NSTextDelegate .

Метод, который вы, вероятно, хотите сначала отловить, - это textDidChange: уведомление , ищущее при нажатии клавиши ввода.

Кроме того, ваш drawRect метод когда-либо вызывался? Если вы не знаете, установите точку останова и узнайте. С каким объектом связан drawRect? Почему drawRect в любом случае? Вы можете просто выбрать NSTextField по центру IBOutlet и установить на нем шрифт.

...