У меня есть UITextField, и я хочу дать ему неотредактированные символы. Например, у меня есть "Hello..."
, и я хочу, чтобы пользователь, чтобы написать между o
и .
, таких как "Hello userTypedStuff..."
UITextField - неотредактированные префиксные символы как в начале, так и в конце
Я использовал этот подход, однако с этим, пользователь может longpress начало и, например, перейти в положение внутри Здравствуйте. Таким образом, пользователь может испортить префиксные символы.
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let protectedRange = NSMakeRange(0, 5)
let intersection = NSIntersectionRange(protectedRange, range)
if intersection.length > 0 {
return false
}
if range.location == 12 {
return true
}
if range.location + range.length > 12 {
return false
}
return true
}
Как настроить что-то вроде «неизменяемых первых 5 символов и последних 3 символов»?
Редактировать: выравниваемый по центру UITextField центр и формируется над UILabel. Однако, если я дам textField ширину метки, textField не будет увеличиваться по ширине. Таким образом, я дал ширину ширины. Есть ли способ создать UILabel на обоих концах, имеющих Hello
и ...
отдельно, и иметь textField (с центром с выравниванием по центру) в середине, который автоматически растягивает ширину?
Edit 2:
Если у меня TextView с двумя статическими UILabels с обеих сторон, что может быть обходной путь. Однако на этот раз UITextField не будет нажимать UILabels на стороны, когда пользователь начнет вводить текст. TextField center textAligned. Если я дам ему постоянную ширину при ее создании (программно с CGRectMake
), он не будет растягивать свою ширину по мере ввода типов пользователей. Таким образом, я дал ему ширину представления. Есть ли способ автотрассировки ширины TextField как пользовательских типов, который подталкивает UILabels по бокам?
"Hello" [textfield] "..."
uilabel uilabel
Я думаю, что вы идете в правильном направлении только, что вы должны использовать несколько условий в shouldChangeCharactersInRange и, возможно, использовать функцию textfieldshouldbegingediting –
Может просто использовать метку для статического текста и для остальных использовать текстовое поле –
@AhmadIshfaq UITextField является программно и textAlign центрируется. Как добавить статический текст слева и справа и развернуть ширину UITextField по мере ввода типов пользователей. Я помещаю ее поверх метки, и я не мог расширять ширину после предоставления ей ширины метки. Вместо этого я дал UITextField ширину представления. Таким образом, я не уверен, как сделать ярлык с моими префиксами слева и написать и переместить их как пользовательские типы. Не могли бы вы дать более подробную информацию? – senty