Добавление не редактируемого суффикса в текстовое поле SwiftUI - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть TextField в SwiftUI, на котором я бы хотел всегда отображать суффикс "%". Пользователь не должен иметь возможность удалить его, и он всегда должен оставаться справа, даже когда текст добавляется.

Как я могу go об этом?

1 Ответ

1 голос
/ 01 февраля 2020

% может быть отдельным представлением, которое всегда отображается точно в правильном положении.

Оберните элемент управления UIKit в UIViewRepresentable. Это даст вам доступ к дополнительной информации о позиционировании. Если вы заключите UITextInput, то вы можете получить CGRect последнего символа текста с помощью firstRect(for:).

Затем вы можете отобразить % :

  • с UIKit в вашем пользовательском представлении
  • или добавить обратный вызов или привязку к вашему пользовательскому просмотр, который возвращает CGRect и отображение % с SwiftUI.

Если вы хотите отобразить % с SwiftUI, это может быть достигнуто с ZStack:

ZStack(alignment: .topLeading) {
  Text("%").offset(x: lastCharacterPosition.maxX, y: lastCharacterPosition.minY)
  CustomTextInput(
    text: $text,
    onLastCharacterPositionChange: { rect in
      self.lastCharacterPosition = rect
    }
  )
}

Обратите внимание, что в этом сценарии CustomTextInput должен быть настроен для прозрачности. Также смещение может потребовать некоторой настройки, я не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...