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.

screenshot

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

voer hier de afbeeldingsbeschrijving in

voer hier de afbeeldingsbeschrijving in

voer hier de afbeeldingsbeschrijving in

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:

voorbeeld van de kiezer

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

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: voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow