Нажатие и редактирование слов предложения в ярлыке

У меня есть несколько предложений, которые отображаются через метку (NSTextField). В этих предложениях есть разные слова, и я хочу, чтобы пользователь нажимал на каждое слово, а затем, соответственно, отображал различные виды информации в зависимости от того, на что нажал пользователь.

Теперь это кажется невозможным сделать с меткой, если я правильно понял. Какие у меня есть альтернативы? Я подумал о том, чтобы поместить каждое слово в отдельный NSButton (и изменить дизайн кнопок, чтобы они больше не выглядели как кнопки). Но должно быть более простое решение для этого?


person dorianbay    schedule 23.01.2016    source источник


Ответы (1)


Нативного решения для этой задачи нет, но вы смотрите в правильном направлении:

1) Нужно отследить слово, которое нажал пользователь

2) Необходимо показать вид с вариантами выбора

У меня была похожая задача, я сделал так:

Я использовал UITextView, чтобы показать некоторый текст после того, как я обнаружил слово, которое нажал пользователь: я добавил TapGesture в свой UITextView и отключил «редактируемый» в UITextView

- (IBAction)gestureAction:(UITapGestureRecognizer *)sender
{
    _textView =  (UITextView *)sender.view;
    CGPoint location = [sender locationInView:_textView];
    CGPoint position = CGPointMake(location.x, location.y);

    //get location in text
    UITextPosition *tapPosition = [_textView closestPositionToPoint:position];

    //word position 
    UITextRange *textRange = [_textView.tokenizer rangeEnclosingPosition:tapPosition withGranularity:UITextGranularityWord inDirection:UITextLayoutDirectionRight];
    NSString *tappedSentence = [_textView textInRange:textRange];
    NSLog(@"selected :%@ -- %@",tappedSentence,tapPosition);

   if ([tappedSentence isEqualToString:@"Lorem"])
   {
      //show choise view
  }
}

Например, если нажатое слово равно "Lorem", я показываю pickerView с некоторым выбором, а после (я знаю выделенную текстовую позицию) я просто заменяю это слово, если есть вопросы, я могу ответить...

P.S извините, я не заметил, что вопрос про программирование OS X, но может быть, это помогло и вам

person Joe Hallenbeck    schedule 23.01.2016
comment
Спасибо. я новичок в Objective-C и какао. так будет ли эквивалент OSX для UITextView быть NSTextView? Я посмотрю, смогу ли я как-то использовать ваше решение на OSX. Большое спасибо. - person dorianbay; 23.01.2016