Zoeken…
Invoering
UITextField is onderdeel van UIKit framework en wordt gebruikt om een gebied weer te geven voor het verzamelen van tekstinvoer van de gebruiker met behulp van het schermtoetsenbord
Syntaxis
- UITextField.text: String // haal de tekst in het veld op of stel deze in.
- UITextField.attributedText: NSAttributedString // haal de toegewezen tekst in het veld op of stel deze in.
- UITextField.textColor: UIColor // haal de kleur van de tekst op het veld op of stel deze in
- UITextField.font: UIFont // haal het lettertype van de tekst in het veld op of stel het in
- UITextField.textAlignment: NSTextAlignment // standaard is NSLeftTextAlignment
- UITextField.borderStyle: UITextBorderStyle // standaard is UITextBorderStyleNone. Indien ingesteld op UITextBorderStyleRoundedRect, worden aangepaste achtergrondafbeeldingen genegeerd.
- UITextField.placeholder: String // default is nul. tekenreeks is 70% grijs getekend
- UITextField.attributedPlaceholder: NSAttributedString // haal de toegewezen placeholder van het veld op of stel deze in
- UITextField.clearsOnBeginEditing: Bool // default is NO waardoor de cursor naar de locatie wordt geklikt. zo JA, alle tekst gewist
- UITextField.adjustsFontSizeToFitWidth: Bool // standaard is NO. indien JA, zal de tekst krimpen tot minFontSize langs de basislijn
- UITextField.minimumFontSize: CGFloat // standaard is 0.0. werkelijke min kan worden vastgezet op iets leesbaar. gebruikt als adjustsFontSizeToFitWidth JA is
- UITextField.delegate: UITextFieldDelegate? // standaard is nul. zwakke referentie
- UITextField.clearButtonMode: UITextFieldViewMode // wordt ingesteld wanneer de knop Wissen verschijnt. standaard is UITextFieldViewModeNever
- UITextField.leftView: UIView? // bijv. vergrootglas
- UITextField.leftViewMode: UITextFieldViewMode // wordt ingesteld wanneer de linkerweergave wordt weergegeven. standaard is UITextFieldViewModeNever
- UITextField.rightView: UIView? // bijv. knop Bladwijzers
- UITextField.rightViewMode: UITextFieldViewMode // wordt ingesteld wanneer de juiste weergave wordt weergegeven. standaard is UITextFieldViewModeNever
- UITextField.inputView: UIView? // Gepresenteerd wanneer object eerste responder wordt. Indien ingesteld op nul, keert terug naar de volgende antwoordketen. Indien ingesteld tijdens de eerste responder, wordt pas van kracht nadat reloadInputViews wordt aangeroepen.
- UITextField.inputAccessoryView: UIView?
- UITextField.isSecureTextEntry: Bool // bijv. Als het veld vertrouwelijke invoer bevat, zoals wachtwoord of kaartnummer
Initialiseer tekstveld
Snel
let frame = CGRect(x: 0, y: 0, width: 100, height: 100)
let textField = UITextField(frame: frame)
Doelstelling C
CGRect *frame = CGRectMake(0, 0, 100, 100);
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
Interface Builder
U kunt ook een UITextField
aan een storyboard toevoegen door het uit de UITextField
te slepen.
Accessoire-invoer (werkbalk)
Voeg een accessoireweergave toe boven het toetsenbord. Dit wordt meestal gebruikt voor het toevoegen van volgende / vorige knoppen, of extra knoppen zoals Gereed / Verzenden (vooral voor de toetsenbordtoetsen met aantal / telefoon / decimale toetsen die geen ingebouwde return-toets hebben).
Snel
let textField = UITextField() // initialized however
let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 0)
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: Selector("done"))
let items = [flexibleSpace, doneButton] // pushes done button to right side
toolbar.setItems(items, animated: false) // or toolbar.items = ...
toolbar.sizeToFit()
textField.inputAccessoryView = toolbar
Doelstelling C
UITextField *textField = [[UITextField alloc] init];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 0)];
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
NSArray *items = @[
flexibleSpace,
doneButton
];
[toolbar setItems:items];
[toolbar sizeToFit];
textField.inputAccessoryView = toolbar;
Autocapitalization
Snel
textField.autocapitalizationType = .None
Doelstelling C
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
Alle opties:
-
.None
\UITextAutocapitalizationTypeNone
: autokapitaliseer niets -
.Words
\UITextAutocapitalizationTypeWords
: autokapitalize elk woord -
.Sentences
\UITextAutocapitalizationTypeSentences
: Autocapitalize het eerste woord in een zin -
.AllCharacters
\UITextAutocapitalizationTypeAllCharacters
: Autokapitalize elke letter (bijv. Caps lock)
Toetsenbord sluiten
Snel
Ctrl + Sleep van het UItextfield in MainStoryboard naar de ViewController Class en maak een UITextField Outlet
Selecteer daarna opnieuw het UItextField en Ctrl + sleep in de klasse ViewController, maar selecteer deze keer Action connection en selecteer bij opslag Did End On Exit en klik vervolgens op connect.
typ in de actie die u zojuist hebt gemaakt de naam van uw UItextField .resignFirstResponder()
@IBAction func textFieldResign(sender: AnyObject) {
yourTextFieldName.resignFirstResponder()
}
Dit zorgt ervoor dat het toetsenbord wordt verborgen wanneer u op de Return-toets op het toetsenbord drukt.
Een ander voorbeeld van het verbergen van het toetsenbord wanneer de Return-toets wordt ingedrukt:
we voegen UITextFieldDelegate
protocol toe naast UIViewController
in de vieDidLoad-functie voegen we self.yourTextFieldName.delegate = self
En tot slot voegen we dit toe
func textFieldShouldReturn(textField: UITextField) -> Bool {
yourTextFieldName.resignFirstResponder()
return true
}
De uiteindelijke code is deze:
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var textField: UITextField!
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?){
view.endEditing(true)
super.touchesBegan(touches, withEvent: event)
}
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
}
Doelstelling C
[textField resignFirstResponder];
Uitlijning instellen
Snel
textField.textAlignment = .Center
Doelstelling C
[textField setTextAlignment: NSTextAlignmentCenter];
In het voorbeeld hebben we de NSTextAlignment
. U kunt ook instellen op .Left
, .Right
, .Justified
en .Natural
.
.Natural
is de standaarduitlijning voor de huidige lokalisatie. Dat betekent voor talen die van links naar rechts gaan (bijv. Engels), de uitlijning is .Left
; voor talen die van rechts naar links gaan, is het .Right
.
KeyboardType
Om het uiterlijk van het toetsenbord te wijzigen, kunnen de volgende typen voor elke UITextFields
eigenschap afzonderlijk worden ingesteld: keyboardType
typedef NS_ENUM(NSInteger, UIKeyboardType) {
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // A number pad with a decimal point.
UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // A type optimized for twitter text entry (easy access to @ #)
UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // A default keyboard type with URL-oriented addition (shows space . prominently).
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
};
Bewegende scroll wanneer UITextView eerste responder wordt
Bekijk de meldingen UIKeyboardWillShowNotification
en UIKeyboardWillHideNotification
, scrollView
inhoud van de scrollView
basis van de toetsenbordhoogte en scrol vervolgens naar het gerichte besturingselement.
- (void)viewDidLoad
{
[super viewDidLoad];
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:self.view.window];
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:self.view.window];
}
// Called when UIKeyboardWillShowNotification is sent
- (void)keyboardWillShow:(NSNotification*)notification
{
// if we have no view or are not visible in any window, we don't care
if (!self.isViewLoaded || !self.view.window) {
return;
}
NSDictionary *userInfo = [notification userInfo];
CGRect keyboardFrameInWindow;
[[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrameInWindow];
// the keyboard frame is specified in window-level coordinates. this calculates the frame as if it were a subview of our view, making it a sibling of the scroll view
CGRect keyboardFrameInView = [self.view convertRect:keyboardFrameInWindow fromView:nil];
CGRect scrollViewKeyboardIntersection = CGRectIntersection(_scrollView.frame, keyboardFrameInView);
UIEdgeInsets newContentInsets = UIEdgeInsetsMake(0, 0, scrollViewKeyboardIntersection.size.height, 0);
// this is an old animation method, but the only one that retains compaitiblity between parameters (duration, curve) and the values contained in the userInfo-Dictionary.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:[[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
[UIView setAnimationCurve:[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
_scrollView.contentInset = newContentInsets;
_scrollView.scrollIndicatorInsets = newContentInsets;
/*
* Depending on visual layout, _focusedControl should either be the input field (UITextField,..) or another element
* that should be visible, e.g. a purchase button below an amount text field
* it makes sense to set _focusedControl in delegates like -textFieldShouldBeginEditing: if you have multiple input fields
*/
if (_focusedControl) {
CGRect controlFrameInScrollView = [_scrollView convertRect:_focusedControl.bounds fromView:_focusedControl]; // if the control is a deep in the hierarchy below the scroll view, this will calculate the frame as if it were a direct subview
controlFrameInScrollView = CGRectInset(controlFrameInScrollView, 0, -10); // replace 10 with any nice visual offset between control and keyboard or control and top of the scroll view.
CGFloat controlVisualOffsetToTopOfScrollview = controlFrameInScrollView.origin.y - _scrollView.contentOffset.y;
CGFloat controlVisualBottom = controlVisualOffsetToTopOfScrollview + controlFrameInScrollView.size.height;
// this is the visible part of the scroll view that is not hidden by the keyboard
CGFloat scrollViewVisibleHeight = _scrollView.frame.size.height - scrollViewKeyboardIntersection.size.height;
if (controlVisualBottom > scrollViewVisibleHeight) { // check if the keyboard will hide the control in question
// scroll up until the control is in place
CGPoint newContentOffset = _scrollView.contentOffset;
newContentOffset.y += (controlVisualBottom - scrollViewVisibleHeight);
// make sure we don't set an impossible offset caused by the "nice visual offset"
// if a control is at the bottom of the scroll view, it will end up just above the keyboard to eliminate scrolling inconsistencies
newContentOffset.y = MIN(newContentOffset.y, _scrollView.contentSize.height - scrollViewVisibleHeight);
[_scrollView setContentOffset:newContentOffset animated:NO]; // animated:NO because we have created our own animation context around this code
} else if (controlFrameInScrollView.origin.y < _scrollView.contentOffset.y) {
// if the control is not fully visible, make it so (useful if the user taps on a partially visible input field
CGPoint newContentOffset = _scrollView.contentOffset;
newContentOffset.y = controlFrameInScrollView.origin.y;
[_scrollView setContentOffset:newContentOffset animated:NO]; // animated:NO because we have created our own animation context around this code
}
}
[UIView commitAnimations];
}
// Called when the UIKeyboardWillHideNotification is sent
- (void)keyboardWillHide:(NSNotification*)notification
{
// if we have no view or are not visible in any window, we don't care
if (!self.isViewLoaded || !self.view.window) {
return;
}
NSDictionary *userInfo = notification.userInfo;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:[[userInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
[UIView setAnimationCurve:[[userInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
// undo all that keyboardWillShow-magic
// the scroll view will adjust its contentOffset apropriately
_scrollView.contentInset = UIEdgeInsetsZero;
_scrollView.scrollIndicatorInsets = UIEdgeInsetsZero;
[UIView commitAnimations];
}
Krijg toetsenbordfocus en verberg toetsenbord
Krijg focus
Snel
textField.becomeFirstResponder()
Doelstelling C
[textField becomeFirstResponder];
Ontslag nemen
Snel
textField.resignFirstResponder()
Doelstelling C
[textField resignFirstResponder];
Vervang toetsenbord door UIPickerView
In sommige gevallen wilt u uw gebruikers een UIPickerView
met vooraf gedefinieerde inhoud voor een UITextField
plaats van een toetsenbord.
Maak een aangepaste UIPickerView
Eerst hebt u een aangepaste wrapper-klasse nodig voor UIPickerView
voldoet aan de protocollen UIPickerViewDataSource
en UIPickerViewDelegate
.
class MyPickerView: UIPickerView, UIPickerViewDataSource, UIPickerViewDelegate
U moet de volgende methoden implementeren voor DataSource en Delegate:
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if data != nil {
return data!.count
} else {
return 0
}
}
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if data != nil {
return data![row]
} else {
return ""
}
}
Om de gegevens te verwerken, MyPickerView
heeft de eigenschappen data
, selectedValue
en textFieldBeingEdited
:
/**
The data for the `UIPickerViewDelegate`
Always needs to be an array of `String`! The `UIPickerView` can ONLY display Strings
*/
public var data: [String]? {
didSet {
super.delegate = self
super.dataSource = self
self.reloadAllComponents()
}
}
/**
Stores the UITextField that is being edited at the moment
*/
public var textFieldBeingEdited: UITextField?
/**
Get the selected Value of the picker
*/
public var selectedValue: String {
get {
if data != nil {
return data![selectedRow(inComponent: 0)]
} else {
return ""
}
}
}
Bereid uw ViewController voor
De ViewController
die uw textField bevat, moet een eigenschap hebben voor uw aangepaste UIPickerView
. (Ervan uitgaande dat u al een andere eigenschap of @IBOutlet
die uw @IBOutlet
bevat)
/**
The picker view to present as keyboard
*/
var picker: MyPickerView?
In uw viewDidLoad()
moet u de picker
initialiseren en een beetje configureren:
picker = MyPickerView()
picker?.autoresizingMask = [.flexibleHeight, .flexibleWidth]
picker?.backgroundColor = UIColor.white()
picker?.data = ["One", "Two", "Three", "Four", "Five"] //The data shown in the picker
Nu kunt u de MyPicker
als inputView
van uw UITextField
:
textField.inputView = picker
Het picker-toetsenbord afwijzen
Nu hebt u het toetsenbord vervangen door een UIPickerView
, maar er is geen mogelijkheid om het te negeren. Dit kan worden gedaan met een aangepaste .inputAccessoryView
:
Voeg de eigenschappenkiezerAccessory pickerAccessory
aan uw ViewController
.
/**
A toolbar to add to the keyboard when the `picker` is presented.
*/
var pickerAccessory: UIToolbar?
In viewDidLoad()
moet u een UIToolbar
voor de inputAccessoryView
:
pickerAccessory = UIToolbar()
pickerAccessory?.autoresizingMask = .flexibleHeight
//this customization is optional
pickerAccessory?.barStyle = .default
pickerAccessory?.barTintColor = UIColor.red()
pickerAccessory?.backgroundColor = UIColor.red()
pickerAccessory?.isTranslucent = false
U moet het kader van uw werkbalk instellen. Om in het ontwerp van iOS te passen, wordt het aanbevolen om een hoogte van 44.0
:
var frame = pickerAccessory?.frame
frame?.size.height = 44.0
pickerAccessory?.frame = frame!
Voor een goede gebruikerservaring moet u twee knoppen toevoegen ("Gereed" en "Annuleren"), maar het zou ook werken met slechts één die het toetsenbord negeert.
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(ViewController.cancelBtnClicked(_:)))
cancelButton.tintColor = UIColor.white()
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) //a flexible space between the two buttons
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(ViewController.doneBtnClicked(_:)))
doneButton.tintColor = UIColor.white()
//Add the items to the toolbar
pickerAccessory?.items = [cancelButton, flexSpace, doneButton]
Nu kunt u de werkbalk toevoegen als inputAccessoryView
textField.inputAccessoryView = pickerAccessory
Voordat u uw project kunt bouwen, moet u de methoden implementeren, de knoppen roepen:
/**
Called when the cancel button of the `pickerAccessory` was clicked. Dismsses the picker
*/
func cancelBtnClicked(_ button: UIBarButtonItem?) {
textField?.resignFirstResponder()
}
/**
Called when the done button of the `pickerAccessory` was clicked. Dismisses the picker and puts the selected value into the textField
*/
func doneBtnClicked(_ button: UIBarButtonItem?) {
textField?.resignFirstResponder()
textField.text = picker?.selectedValue
}
Voer uw project uit, tik op het textField
en u zou een dergelijke kiezer in plaats van het toetsenbord moeten zien:
Selecteer een waarde programmatisch (optioneel)
Als u niet wilt dat de eerste rij automatisch wordt geselecteerd, kunt u de geselecteerde rij instellen zoals in UIPickerView
:
picker?.selectRow(3, inComponent: 0, animated: false) //Will select the row at index 3
Sluit het toetsenbord af wanneer de gebruiker op de retourknop drukt
Stel uw viewcontroller in om het bewerken van tekst voor het tekstveld te beheren.
class MyViewController: UITextFieldDelegate {
override viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}
}
textFieldShouldReturn
wordt elke keer aangeroepen wanneer de Return-toets op het toetsenbord wordt ingedrukt.
Snel:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true;
}
Doelstelling C:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return true;
}
Cursorpositie verkrijgen en instellen
Bruikbare informatie
Het allereerste begin van de tekst in het tekstveld:
let startPosition: UITextPosition = textField.beginningOfDocument
Het einde van de tekst in het tekstveld:
let endPosition: UITextPosition = textField.endOfDocument
Het momenteel geselecteerde bereik:
let selectedRange: UITextRange? = textField.selectedTextRange
Krijg cursorpositie
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offsetFromPosition(textField.beginningOfDocument, toPosition: selectedRange.start)
print("\(cursorPosition)")
}
Cursorpositie instellen
Om de positie in te stellen, stellen al deze methoden eigenlijk een bereik in met dezelfde begin- en eindwaarden.
Naar het begin
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRangeFromPosition(newPosition, toPosition: newPosition)
Naar het einde
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRangeFromPosition(newPosition, toPosition: newPosition)
Naar een positie links van de huidige cursorpositie
// only if there is a currently selected range
if let selectedRange = textField.selectedTextRange {
// and only if the new position is valid
if let newPosition = textField.positionFromPosition(selectedRange.start, inDirection: UITextLayoutDirection.Left, offset: 1) {
// set the new position
textField.selectedTextRange = textField.textRangeFromPosition(newPosition, toPosition: newPosition)
}
}
Naar een willekeurige positie
Begin bij het begin en verplaats 5 tekens naar rechts.
let arbitraryValue: Int = 5
if let newPosition = textField.positionFromPosition(textField.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRangeFromPosition(newPosition, toPosition: newPosition)
}
Verwant
Selecteer alle tekst
textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument)
Selecteer een tekstbereik
// Range: 3 to 7
let startPosition = textField.positionFromPosition(textField.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: 3)
let endPosition = textField.positionFromPosition(textField.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: 7)
if startPosition != nil && endPosition != nil {
textField.selectedTextRange = textField.textRangeFromPosition(startPosition!, toPosition: endPosition!)
}
Tekst invoegen op de huidige cursorpositie
textField.insertText("Hello")
Notes
Dit voorbeeld komt oorspronkelijk uit dit Stack Overflow-antwoord .
Dit antwoord gebruikt een tekstveld, maar dezelfde concepten zijn van toepassing op
UITextView
.Gebruik
textField.becomeFirstResponder()
om het tekstveld de focus te geven en het toetsenbord te laten verschijnen.Zie dit antwoord voor het verkrijgen van de tekst op een bepaald bereik.
Verwant
- Hoe kan ik een Range in Swift aanmaken (Deals indirect met de vraag waarom we moeten gebruiken
selectedTextRange
hier in plaats van alleenselectedRange
)
Verberg knipperend teken
Om het knipperende teken te verbergen, moet u het teken vervangen door caretRectForPosition van een UITextField en CGRectZero retourneren.
Swift 2.3 <
public override func caretRectForPosition(position: UITextPosition) -> CGRect {
return CGRectZero
}
Swift 3
override func caretRect(for position: UITextPosition) -> CGRect {
return CGRect.zero
}
Doelstelling C
- (CGRect) caretRectForPosition:(UITextPosition*) position{
return CGRectZero;
}
Wijzig de kleur en het lettertype van de tijdelijke aanduiding
We kunnen de stijl van de tijdelijke aanduiding wijzigen door attributedPlaceholder
(een NSAttributedString
) in te stellen.
var placeholderAttributes = [String: AnyObject]()
placeholderAttributes[NSForegroundColorAttributeName] = color
placeholderAttributes[NSFontAttributeName] = font
if let placeholder = textField.placeholder {
let newAttributedPlaceholder = NSAttributedString(string: placeholder, attributes: placeholderAttributes)
textField.attributedPlaceholder = newAttributedPlaceholder
}
In dit voorbeeld wijzigen we alleen de color
en het font
. U kunt andere eigenschappen wijzigen, zoals onderstrepen of doorhalen. Raadpleeg NSAttributedString
voor de eigenschappen die kunnen worden gewijzigd.
Maak een UITextField
Initialiseer het UITextField
met een CGRect als frame:
Snel
let textfield = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
Doelstelling C
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 21)];
U kunt ook een UITextField
in Interface Builder maken: