Получение позиции курсора в UITextView на iPhone?

Как указано в документации для WM_CONTEXTMENU, когда дочернее окно не обрабатывает сообщение, процедура окна по умолчанию отправляет сообщение в родительское окно.

Таким образом, вы можете отобразить всплывающее меню, обработав сообщение на родительском элементе управления. В приведенном ниже примере отображается «PopupMenu1» для «Panel1», помещенной в форму, вам может потребоваться настроить ее, если элемент управления не размещен непосредственно в форме.

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Panel1: TPanel;
    ..
  protected
    procedure WMContextMenu(var Message: TWMContextMenu);
      message WM_CONTEXTMENU;
  end;

...

procedure TForm1.WMContextMenu(var Message: TWMContextMenu);
var
  Pt: TPoint;
  Control: TControl;
begin
  Pt := SmallPointToPoint(Message.Pos);
  Control := ControlAtPos(ScreenToClient(Pt), False, True, True);
  if Control = Panel1 then begin
    PopupMenu1.PopupComponent := Panel1;
    PopupMenu1.Popup(Pt.X, Pt.Y);
    Message.Result := 1;
  end;
  inherited;
end;

28
задан Suragch 30 January 2016 в 05:25
поделиться

3 ответа

Как сказанный drewh, можно использовать selectedRange UITextView для возврата точки вставки. Длина этого диапазона всегда является нулем. Пример ниже шоу, как к нему.

NSString *contentsToAdd = @"some string";
NSRange cursorPosition = [tf selectedRange];
NSMutableString *tfContent = [[NSMutableString alloc] initWithString:[tf text]];
[tfContent insertString:contentsToAdd atIndex:cursorPosition.location];
[theTextField setText:tfContent];
[tfContent release];
32
ответ дан jpedroso 28 November 2019 в 03:04
поделиться

Используйте UITextView selectedRange свойство для нахождения точки вставки, когда текстовое представление будет первым респондентом. Иначе, когда представление не находится в фокусе, это свойство возвраты NSNotFound. Если необходимо знать позицию курсора в этом случае, рассмотреть разделение на подклассы UITextView и переопределение canResignFirstResponder метод, где можно сохранить позицию курсора к членской переменной.

10
ответ дан Piyush Dubey 28 November 2019 в 03:04
поделиться

Вы попробовали UITextView.selectedRange? Это возвращается NSRange, чей элемент местоположения должен сказать Вам, где курсор.

8
ответ дан etolstoy 28 November 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: