Metin Alanım var ve şifre gizlendiğinde varsayılan nokta karakterini değiştirmek istiyorum. Bunu kolayca yapmanın bir yolu var mı? BuradaNoktaları iOS Swift'de başka bir karaktere nasıl değiştirebilirim?
6
A
cevap
4
2 seçenekleri:
- güvenli giriş seçeneği olmadan normal bir metin alanını kullanın. Bir kullanıcı bir karakter girdiğinde, onu bir string değişkenine kaydedin ve mermiler yerine sunmak istediğiniz karakterle birlikte metin alanına değiştirin. UITextField secureTextEntry bullets with a custom font?
1
:
var password: String = ""
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
password = password+string
textField.text = textField.text+"$"
println("\(password)")
return false
}
burada
-
: İşte
//
// PasswordTextField.swift
// CrifanLibSwift
//
// Created by licrifan on 16/7/8.
// Copyright © 2016年 licrifan. All rights reserved.
//
import UIKit
class PasswordTextField: CommonTextField, UITextFieldDelegate {
var realText:String {
didSet {
print("self.text=\(self.text), realText=\(realText)")
updateMaskStr()
}
}
var maskChar:Character
init(frame: CGRect = CGRectZero, maskChar:Character = "*") {
print("frame=\(frame), maskChar=\(maskChar)")
self.realText = ""
self.maskChar = maskChar
super.init(frame: frame)
self.secureTextEntry = false
self.addTarget(self, action: #selector(self.textFiledEditingChanged(_:)), forControlEvents: UIControlEvents.EditingChanged)
self.delegate = self
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func updateMaskStr(){
print("before update: self.text=\(self.text), self.realText=\(self.realText)")
//change real text to mask char
var maskStr = ""
for _ in self.realText.characters {
maskStr += String(self.maskChar)
}
self.text = maskStr
print("after update: self.text=\(self.text), self.realText=\(self.realText)")
}
func textFiledEditingChanged(textField: UITextField) {
print("textField=\(textField), textField.text=\(textField.text)")
updateMaskStr()
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
print("textField=\(textField), range=\(range), string=\(string)")
var allow = true
let curText = self.realText
let updatedStr:String = (curText as NSString).stringByReplacingCharactersInRange(range, withString: string)
if updatedStr.characters.count > LoginRegisterPasswordLengthMax {
print("password exceed max length \(LoginRegisterPasswordLengthMax)")
allow = false
}
if allow {
self.realText = updatedStr
}
print("curText=\(curText), updatedStr=\(updatedStr), self.realText=\(self.realText)")
return false
}
}
ve başka görünümde EditInfoView.swift
içinde orayı kullanmak: nihayet
class EditInfoView: UIView {
var passwordTextField:PasswordTextField
init(editMode:EditInfoMode) {
self.passwordTextField = PasswordTextField()
self.addSubview(self.passwordTextField)
if self.passwordTextField.notHidden {
//5. password text
var passwordPlaceholder = "密码(6-20位)"
if self.editMode == .ChangeLoginPassword {
passwordPlaceholder = "旧密码(6-20位)"
} else if self.editMode == .ForgotPassword {
passwordPlaceholder = "输入新密码(6-20位)"
}
self.passwordTextField.placeholder = passwordPlaceholder
self.passwordTextField.returnKeyType = UIReturnKeyType.Go
// self.passwordTextField.secureTextEntry = true
constrain(passwordTextField, smsCodeTextField, phoneTextField) {passwordTextField, smsCodeTextField, phoneTextField in
passwordTextField.centerX == passwordTextField.superview!.centerX
passwordTextField.width == passwordTextField.superview!.width - 2 * LoginRegisterPaddingX
passwordTextField.height == CommonTextFieldHeight
if self.editMode == .ChangeLoginPassword {
passwordTextField.top == passwordTextField.superview!.top + EditInfoViewTopPadding
} else {
passwordTextField.top == smsCodeTextField.bottom + EditInfoViewCommonPaddingY
}
}
}
}
gerçek kullanımına bir görünüm denetleyicisi EditInfoViewController.swift
o:
isValid = validatePassword(self, alertPrefix: alertPrefix, passwordStr: self.editInfoView.passwordTextField.realText, doAlertWhenInvalid: doAlertWhenInvalid)
nihai etkisi: Eh
İlgili konular
- 1. Bu rahatsız edici yatay noktaları ve okları nasıl değiştirebilirim? =)
- 2. Başka birinin kodunu değiştirdiğimde Javadoc'u nasıl değiştirebilirim?
- 3. iOS/Çekirdek Verileri - NSFetchedResultsController bölümNameKeyPath nasıl değiştirebilirim?
- 4. Dizeyi bir diziyi kullanarak başka bir dizeyle nasıl değiştirebilirim?
- 5. Bir iOS aygıtı döndüğünde, yönlendirmeyi yalnızca bir öğeyi nasıl değiştirebilirim?
- 6. Karakter kodunu bir karaktere nasıl dönüştürebilirim?
- 7. Java kodunda xml düzenini başka bir düzende nasıl değiştirebilirim?
- 8. Bindirmelerim, başka bir bağlantı tıklandığında kapanabilmesi için nasıl değiştirebilirim?
- 9. Bir iOS projesini başka bir iOS projesine entegre etme
- 10. Karakter bir dize işaretçi noktalarını nasıl değiştirebilirim?
- 11. iOS - tüm NSMutableAttributedString öznitelikleri başka bir NSMutableAttributedString
- 12. Bir data.frame'deki tek bir değeri nasıl değiştirebilirim?
- 13. IOS Kaydırılabilir Görüntüyü başka bir ScrollView Görünümü
- 14. iOS Başka bir kontrolöre bastığınızda takılma
- 15. UIPageControl noktaları nasıl değiştirilir
- 16. UIPopoverPresentionController iOS 8'de ok rengini nasıl değiştirebilirim?
- 17. iOS 7+ üzerindeki UIBarButtonItem öğesinin arka plan rengini nasıl değiştirebilirim?
- 18. iOS geliştirici portalına başka bir geliştiricinin sertifikasını nasıl ekleyebilirim?
- 19. ios uygulamasında başka bir uygulamadan nasıl resim açılır?
- 20. UICollectionView'da kaydırma yönünü nasıl değiştirebilirim?
- 21. Bir dizi farklı karaktere bölünmüş dize
- 22. Bir UIImage'ın doygunluğunu nasıl değiştirebilirim?
- 23. Sınırları bir movieclip'e nasıl değiştirebilirim
- 24. Ben bir görüntüyü nasıl değiştirebilirim
- 25. Bir DrawingBrush'ta renkleri nasıl değiştirebilirim?
- 26. Aradığım bir kelimeyi nasıl değiştirebilirim?
- 27. Bir ggplot2 efsanesinin başlığını nasıl değiştirebilirim?
- 28. Belirli bir şeklin kenarlık noktaları nasıl bulunur?
- 29. Göreli noktaları kullanarak bir görünümü nasıl programlayabilirim?
- 30. Her bir satırda kesme noktaları nasıl ayarlanır?
Bu, yerleşik bir seçenek değil, eğer istediğin buysa; Kendi UITextField alt sınıfınızı yazmak zorundasınız. – matt