Ορίστε το μέγιστο μήκος χαρακτήρα μιας UITextField

ψήφοι
439

Πώς μπορώ να ρυθμίσω το μέγιστο ποσό των χαρακτήρων σε ένα UITextFieldγια το iPhone SDK όταν φορτώσει ένα UIView;

Δημοσιεύθηκε 11/01/2009 στις 19:08
πηγή χρήστη
Σε άλλες γλώσσες...                            


44 απαντήσεις

ψήφοι
970

Αν και η UITextFieldτάξη δεν έχει κανένα ακίνητο μέγιστο μήκος, είναι σχετικά απλό να πάρει αυτή τη λειτουργία ορίζοντας το πεδίο κειμένου delegateκαι την εφαρμογή της παρακάτω μεθόδου εκπρόσωπος:

Στόχος-C

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    // Prevent crashing undo bug – see note below.
    if(range.length + range.location > textField.text.length)
    {
        return NO;
    }

    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return newLength <= 25;
}

Ταχύς

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let currentCharacterCount = textField.text?.characters.count ?? 0
    if (range.length + range.location > currentCharacterCount){
        return false
    }
    let newLength = currentCharacterCount + string.characters.count - range.length
    return newLength <= 25
}

Πριν από τις αλλαγές πεδίο κειμένου, η UITextField ζητά από τον εκπρόσωπο, αν το συγκεκριμένο κείμενο θα πρέπει να αλλάξει. Το πεδίο κειμένου δεν έχει αλλάξει σε αυτό το σημείο, έτσι ώστε να αρπάξει είναι τρέχον μήκος και το μήκος συμβολοσειράς είμαστε εισαγωγή (είτε με επικόλληση αντιγραφή κειμένων ή πληκτρολογώντας έναν χαρακτήρα με τη χρήση του πληκτρολογίου), μείον το μήκος σειράς. Εάν αυτή η τιμή είναι πολύ μεγάλο (πάνω από 25 χαρακτήρες σε αυτό το παράδειγμα), επιστρέφουν NOγια να απαγορεύσουν την αλλαγή.

Όταν πληκτρολογείτε σε ένα ενιαίο χαρακτήρα στο τέλος ενός πεδίου κειμένου, η range.locationθα είναι το μήκος του τρέχοντος πεδίου, και range.lengthθα είναι 0, γιατί δεν είμαστε αντικατάσταση / διαγραφή τίποτα. Εισαγωγή στη μέση ενός πεδίου κειμένου ακριβώς σημαίνει ένα διαφορετικό range.locationκαι επικόλληση πολλαπλών χαρακτήρων σημαίνει απλώς stringέχει περισσότερα από ένα χαρακτήρα σε αυτό.

Διαγραφή μονό χαρακτήρες ή κοπή πολλών χαρακτήρων καθορίζεται από ένα rangeμε ένα μη-μηδενικό μήκος, και μια κενή συμβολοσειρά. Η αντικατάσταση είναι απλά μια διαγραφή σειρά με ένα μη-κενό string.

Μια σημείωση σχετικά με τη συντριβή «αναίρεση» bug

Όπως αναφέρεται στα σχόλια, υπάρχει ένα bug με UITextFieldότι μπορεί να οδηγήσει σε μια συντριβή.

Εάν επικολλήσετε μέσα στο πεδίο, αλλά η πάστα εμποδίζεται από την εφαρμογή της επικύρωσης σας, η λειτουργία πάστα εξακολουθεί να καταγράφεται σε ρυθμιστικό αναίρεση της εφαρμογής. Εάν στη συνέχεια φωτιά ένα undo (με ανακίνηση της συσκευής και την επιβεβαίωση μιας Undo), η UITextFieldθα προσπαθήσει να αντικαταστήσει το string που σκέφτεται να επικολληθεί στο ίδιο με ένα κενό string. Αυτό θα συντριβή, επειδή ποτέ δεν πραγματικά επικολληθεί το string στο ίδιο. Θα προσπαθήσει να αντικαταστήσει ένα τμήμα της συμβολοσειράς που δεν υπάρχει.

Ευτυχώς μπορείτε να προστατέψετε το UITextFieldαπό τη δολοφονία ίδια όπως αυτό. Απλά πρέπει να διασφαλιστεί ότι η περιοχή θα προτείνει την αντικατάσταση δεν υπάρχουν μέσα σε ρεύμα στοιχειοσειράς της. Αυτό είναι ό, τι παραπάνω κάνει ο αρχικός έλεγχος λογικής.

ταχεία 3.0 με αντιγραφή και επικόλληση λειτουργούν καλά.

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        let str = (textView.text + text)
        if str.characters.count <= 10 {
            return true
        }
        textView.text = str.substring(to: str.index(str.startIndex, offsetBy: 10))
        return false
    }

Ελπίζω να είναι χρήσιμη σε σας.

Απαντήθηκε 20/11/2009 στις 22:10
πηγή χρήστη

ψήφοι
56

Ευχαριστούμε τον Αύγουστο! ( Δημοσίευση )

Αυτός είναι ο κωδικός που κατέληξα με την οποία λειτουργεί:

#define MAX_LENGTH 20

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField.text.length >= MAX_LENGTH && range.length == 0)
    {
        return NO; // return NO to not change text
    }
    else
    {return YES;}
}
Απαντήθηκε 11/01/2009 στις 20:40
πηγή χρήστη

ψήφοι
29

Swift 4

import UIKit

private var kAssociationKeyMaxLength: Int = 0

extension UITextField {

    @IBInspectable var maxLength: Int {
        get {
            if let length = objc_getAssociatedObject(self, &kAssociationKeyMaxLength) as? Int {
                return length
            } else {
                return Int.max
            }
        }
        set {
            objc_setAssociatedObject(self, &kAssociationKeyMaxLength, newValue, .OBJC_ASSOCIATION_RETAIN)
            addTarget(self, action: #selector(checkMaxLength), for: .editingChanged)
        }
    }

    @objc func checkMaxLength(textField: UITextField) {
        guard let prospectiveText = self.text,
            prospectiveText.count > maxLength
            else {
                return
        }

        let selection = selectedTextRange

        let indexEndOfText = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
        let substring = prospectiveText[..<indexEndOfText]
        text = String(substring)

        selectedTextRange = selection
    }
}

Επεξεργασία: θέμα διαρροής μνήμης σταθερό.

εισάγετε περιγραφή της εικόνας εδώ

Απαντήθηκε 22/04/2015 στις 16:56
πηγή χρήστη

ψήφοι
21

Για να ολοκληρώσετε Αύγουστο απάντηση, μια πιθανή εφαρμογή της προτεινόμενης λειτουργίας (βλ εκπρόσωπος UITextField του ).

Δεν είχα δοκιμάσει domness κώδικα, αλλά η δική μου δεν κολλάνε αν ο χρήστης φτάσει στο όριο, και είναι συμβατή με μια νέα συμβολοσειρά που έρχεται να αντικαταστήσει ένα μικρότερο ή ίσο μία.

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    //limit the size :
    int limit = 20;
    return !([textField.text length]>limit && [string length] > range.length);
}
Απαντήθηκε 16/04/2009 στις 08:51
πηγή χρήστη

ψήφοι
17

Δεν μπορείτε να το κάνετε αυτό άμεσα - UITextFieldδεν έχει maxlength χαρακτηριστικό, αλλά μπορείτε να ρυθμίσετε το UITextField'sπληρεξούσιο, στη συνέχεια, χρησιμοποιήστε:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
Απαντήθηκε 11/01/2009 στις 19:42
πηγή χρήστη

ψήφοι
13

Συχνά έχετε πολλαπλά πεδία εισόδου με διαφορετικό μήκος.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    int allowedLength;
    switch(textField.tag) {
        case 1: 
            allowedLength = MAXLENGTHNAME;      // triggered for input fields with tag = 1
            break;
        case 2:
            allowedLength = MAXLENGTHADDRESS;   // triggered for input fields with tag = 2
            break;
        default:
            allowedLength = MAXLENGTHDEFAULT;   // length default when no tag (=0) value =255
            break;
    }

    if (textField.text.length >= allowedLength && range.length == 0) {
        return NO; // Change not allowed
    } else {
        return YES; // Change allowed
    }
}
Απαντήθηκε 07/09/2012 στις 08:39
πηγή χρήστη

ψήφοι
12

Ο καλύτερος τρόπος θα ήταν να δημιουργήσει μια ειδοποίηση για την αλλαγή κειμένου. Σε σας -awakeFromNibτης μεθόδου ελέγχου άποψή σας, θα θελήσετε:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(limitTextField:) name:@"UITextFieldTextDidChangeNotification" object:myTextField];

Στη συνέχεια, στην ίδια κατηγορία add:

- (void)limitTextField:(NSNotification *)note {
    int limit = 20;
    if ([[myTextField stringValue] length] > limit) {
        [myTextField setStringValue:[[myTextField stringValue] substringToIndex:limit]];
    }
}

Στη συνέχεια συνδέσει την έξοδο myTextFieldγια να σας UITextFieldκαι δεν θα σας αφήσει να προσθέσετε πια χαρακτήρες, αφού χτύπησε το όριο. Να είστε βέβαιος να προσθέσετε αυτή τη μέθοδο dealloc σας:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:myTextField];
Απαντήθηκε 11/01/2009 στις 20:19
πηγή χρήστη

ψήφοι
11

Δημιούργησα αυτό το υποκατηγορία UITextFieldLimit:

  • Πολλαπλές textfields υποστηρίζεται
  • Ρυθμίστε το όριο μήκους κείμενο
  • πρόληψης Επικόλληση
  • Εμφανίζει μια ετικέτα της αριστερής χαρακτήρες μέσα στο πεδίο κειμένου, να πάρει τα κρυφά όταν σταματήσετε την επεξεργασία.
  • Ανακινήστε animation όταν άφησε κανένα χαρακτήρες.

Πιάσε το UITextFieldLimit.hκαι UITextFieldLimit.mαπό αυτό το αποθετήριο GitHub:

https://github.com/JonathanGurebo/UITextFieldLimit

και να αρχίσουν να δοκιμάσετε!

Σημειώστε storyboard δημιουργείται UITextField σας και συνδέστε τη στην υποκατηγορία μου χρησιμοποιώντας τον Επιθεωρητή Ταυτότητα:

ταυτότητα Επιθεωρητής

Στη συνέχεια, μπορείτε να το συνδέσετε με μια IBOutlet και να ρυθμίσετε το όριο (προεπιλογή είναι 10).


αρχείο ViewController.h σας πρέπει να περιέχει: (αν wan't να τροποποιήσετε τη ρύθμιση, όπως το όριο)

#import "UITextFieldLimit.h"

/.../

@property (weak, nonatomic) IBOutlet UITextFieldLimit *textFieldLimit; // <--Your IBOutlet

Αρχείο ViewController.m σας πρέπει @synthesize textFieldLimit.


Ρυθμίστε το όριο των κειμένων σε αρχείο ViewController.m σας:

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    [textFieldLimit setLimit:25];// <-- and you won't be able to put more than 25 characters in the TextField.
}

Ελπίζω η τάξη σας βοηθά. Καλή τύχη!

Απαντήθηκε 12/04/2014 στις 23:37
πηγή χρήστη

ψήφοι
10

Αυτό θα πρέπει να είναι αρκετό για να λύσει το πρόβλημα (αντικαταστήστε 4 από το όριο θες). Απλά φροντίστε να προσθέσετε το πληρεξούσιο στο IB.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
     return (newString.length<=4);
}
Απαντήθηκε 20/08/2012 στις 11:10
πηγή χρήστη

ψήφοι
7

Swift 3 έκδοση // ***** Αυτό δεν θα λειτουργήσει με Swift 2.x! ***** //

Πρώτα δημιουργήσετε ένα νέο Swift αρχείου: TextFieldMaxLength.swift, και στη συνέχεια προσθέστε τον παρακάτω κώδικα:

import UIKit

private var maxLengths = [UITextField: Int]()

extension UITextField {

   @IBInspectable var maxLength: Int {

      get {

          guard let length = maxLengths[self] 
             else {
                return Int.max
      }
      return length
   }
   set {
      maxLengths[self] = newValue
      addTarget(
         self,
         action: #selector(limitLength),
         for: UIControlEvents.editingChanged
      )
   }
}
func limitLength(textField: UITextField) {
    guard let prospectiveText = textField.text,
        prospectiveText.characters.count > maxLength
    else {
        return
    }

   let selection = selectedTextRange
   let maxCharIndex = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
   text = prospectiveText.substring(to: maxCharIndex)
   selectedTextRange = selection
   }
}

και τότε θα δείτε στο Storyboard ένα νέο πεδίο (Max Μήκος) όταν επιλέγετε οποιοδήποτε TextField

αν εξακολουθείτε να έχετε περισσότερες ερωτήσεις ελέγξτε έξω αυτό το σύνδεσμο: http://www.globalnerdy.com/2016/05/18/ios-programming-trick-how-to-use-xcode-to-set-a-text-fields -Μέγιστη-μήκους-οπτική-studio-style /

Απαντήθηκε 29/09/2016 στις 15:28
πηγή χρήστη

ψήφοι
7

Θα προσομοιώνουν την πραγματική αντικατάσταση συμβολοσειράς που πρόκειται να συμβεί για να υπολογίσει το μήκος του εν λόγω μέλλον στοιχειοσειράς:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    if([newString length] > maxLength)
       return NO;

    return YES;
}
Απαντήθηκε 28/07/2011 στις 05:58
πηγή χρήστη

ψήφοι
6

Ο κώδικας που ακολουθεί είναι παρόμοια με την απάντηση sickp, αλλά χειρίζεται σωστά λειτουργίες copy-paste. Αν προσπαθήσετε να επικολλήσετε ένα κείμενο που είναι μεγαλύτερο από το όριο, ο κώδικας που ακολουθεί θα περικόψει το κείμενο για να χωρέσει το όριο αντί να αρνηθεί τη λειτουργία πάστα εντελώς.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    static const NSUInteger limit = 70; // we limit to 70 characters
    NSUInteger allowedLength = limit - [textField.text length] + range.length;
    if (string.length > allowedLength) {
        if (string.length > 1) {
            // get at least the part of the new string that fits
            NSString *limitedString = [string substringToIndex:allowedLength];
            NSMutableString *newString = [textField.text mutableCopy];
            [newString replaceCharactersInRange:range withString:limitedString];
            textField.text = newString;
        }
        return NO;
    } else {
        return YES;
    }
}
Απαντήθηκε 12/08/2014 στις 09:02
πηγή χρήστη

ψήφοι
6

Χρησιμοποιώντας οικοδόμος Interface μπορείτε να συνδέσετε και να πάρει την εκδήλωση για «Επεξεργασία αλλάξει» σε οποιαδήποτε από τη λειτουργία σας. Τώρα εκεί μπορείτε να βάλετε ελέγχου για το μήκος

- (IBAction)onValueChange:(id)sender 
{
    NSString *text = nil;
    int MAX_LENGTH = 20;
    switch ([sender tag] ) 
    {
        case 1: 
        {
            text = myEditField.text;
            if (MAX_LENGTH < [text length]) {
                myEditField.text = [text substringToIndex:MAX_LENGTH];
            }
        }
            break;
        default:
            break;
    }

}
Απαντήθηκε 16/09/2010 στις 09:35
πηγή χρήστη

ψήφοι
5

Για να δουλέψει με cut & paste των χορδών οποιουδήποτε μήκους, θα ήθελα να προτείνω την αλλαγή της λειτουργίας σε κάτι σαν:

#define MAX_LENGTH 20

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSInteger insertDelta = string.length - range.length;

        if (textField.text.length + insertDelta > MAX_LENGTH)
        {
           return NO; // the new string would be longer than MAX_LENGTH
        }
        else {
            return YES;
        }
    }
Απαντήθηκε 13/10/2009 στις 08:34
πηγή χρήστη

ψήφοι
4

Υπάρχει γενική λύση για τη ρύθμιση μέγιστο μήκος Swift. Με IBInspectable μπορείτε να προσθέσετε νέα Χαρακτηριστικό το Xcode Χαρακτηριστικό Επιθεωρητή.εισάγετε περιγραφή της εικόνας εδώ

import UIKit
private var maxLengths = [UITextField: Int]()
extension UITextField {

    @IBInspectable var maxLength: Int {
        get {
            guard let length = maxLengths[self]
            else {
                return Int.max
            }
            return length
        }
        set {
            maxLengths[self] = newValue
            addTarget(
                self,
                action: Selector("limitLength:"),
                forControlEvents: UIControlEvents.EditingChanged
            )
        }
    }

    func limitLength(textField: UITextField) {
        guard let prospectiveText = textField.text
            where prospectiveText.characters.count > maxLength else {
                return
        }
        let selection = selectedTextRange
        text = prospectiveText.substringWithRange(
            Range<String.Index>(prospectiveText.startIndex ..< prospectiveText.startIndex.advancedBy(maxLength))
        )
        selectedTextRange = selection
    }

}
Απαντήθηκε 11/08/2016 στις 12:17
πηγή χρήστη

ψήφοι
3

ταχεία 3.0

Αυτός ο κωδικός λειτουργεί καλά όταν είστε κορδόνι πάστα πάνω από τα όρια του χαρακτήρα σας.

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        let str = (textView.text + text)
        if str.characters.count <= 10 {
            return true
        }
        textView.text = str.substring(to: str.index(str.startIndex, offsetBy: 10))
        return false
    }

Ευχαριστούμε για την ψήφο σας. :)

Απαντήθηκε 29/12/2016 στις 13:35
πηγή χρήστη

ψήφοι
3

Swift 2.0 +

Πρώτα απ 'όλα δημιουργούν μια τάξη για αυτή τη διαδικασία. Αφήνει το ονομάσουμε StringValidator.swift.

Στη συνέχεια, απλά επικολλήστε τον παρακάτω κώδικα μέσα σε αυτό.

import Foundation

extension String {

func containsCharactersIn(matchCharacters: String) -> Bool {
let characterSet = NSCharacterSet(charactersInString: matchCharacters)
return self.rangeOfCharacterFromSet(characterSet) != nil
}

func containsOnlyCharactersIn(matchCharacters: String) -> Bool {
let disallowedCharacterSet = NSCharacterSet(charactersInString: matchCharacters).invertedSet
return self.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
}


func doesNotContainCharactersIn(matchCharacters: String) -> Bool {
let characterSet = NSCharacterSet(charactersInString: matchCharacters)
return self.rangeOfCharacterFromSet(characterSet) == nil
}

func isNumeric() -> Bool
{
let scanner = NSScanner(string: self)
scanner.locale = NSLocale.currentLocale()

return scanner.scanDecimal(nil) && scanner.atEnd
}

}

Τώρα σώσει την κατηγορία .....

Χρήση..

Τώρα goto τάξη viewController.swift σας και να κάνετε καταστήματα πεδίο κειμένου σας, όπως ..

@IBOutlet weak var contactEntryTxtFld: UITextField! //First textfield
@IBOutlet weak var contactEntryTxtFld2: UITextField!   //Second textfield

Τώρα goto μέθοδο shouldChangeCharactersInRange του πεδίο κειμένου και χρησιμοποιεί σαν το παρακάτω.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if string.characters.count == 0 {
        return true
    }
    let latestText = textField.text ?? ""
    let checkAbleText = (latestText as NSString).stringByReplacingCharactersInRange(range, withString: string)


    switch textField {

    case contactEntryTxtFld:
        return checkAbleText.containsOnlyCharactersIn("0123456789") && prospectiveText.characters.count <= 5

    case contactEntryTxtFld2:
        return checkAbleText.containsOnlyCharactersIn("0123456789") && prospectiveText.characters.count <= 5

    default:
        return true
    }

}

Μην ξεχάσετε να ρυθμίσετε το Πρωτόκολλο του εκπροσώπου / μεθόδους textfields.

Επιτρέψτε μου να εξηγήσω γι 'αυτό ... Είμαι χρησιμοποιώντας την απλή διαδικασία επέκτασης των χορδών που έγραψα μέσα σε ένα άλλο κλάδο. Τώρα είμαι απλά καλώντας τις μεθόδους επέκτασης από άλλη κατηγορία όπου τα χρειάζεστε, προσθέτοντας έλεγχο και μέγιστη τιμή.

Χαρακτηριστικά...

  1. Θα οριστεί ανώτατο όριο ενός συγκεκριμένου πεδίο κειμένου.
  2. Θα θέσει το είδος των αποδεκτών κλειδιά για συγκεκριμένες πεδίο κειμένου.

Τύποι ...

containsOnlyCharactersIn // δέχεται μόνο χαρακτήρες.

containsCharactersIn // Δέχεται συνδυασμό χαρακτήρων

doesNotContainsCharactersIn // Δεν θα δεχτούμε χαρακτήρες

Ελπίδα αυτό βοήθησε .... Ευχαριστώ ..

Απαντήθηκε 27/11/2015 στις 18:51
πηγή χρήστη

ψήφοι
3

Αυτός είναι ο σωστός τρόπος για να χειριστεί μέγιστο μήκος για UITextField, επιτρέπει το πλήκτρο επιστροφής για να βγείτε από το να παραιτηθεί το πεδίο κειμένου ως πρώτη ανταπόκρισης και αφήνει το backspace χρήστη όταν φτάσουν το όριο

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
int MAX_LENGHT = 5;
    if([string isEqualToString:@"\n"])
    {
        [textField resignFirstResponder];
        return FALSE;
    }
    else if(textField.text.length > MAX_LENGHT-1)
    {
        if([string isEqualToString:@""] && range.length == 1)
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    else
    {
        return TRUE;
    }
}
Απαντήθηκε 23/09/2013 στις 16:30
πηγή χρήστη

ψήφοι
2

Για Xamarin:

YourTextField.ShouldChangeCharacters = 
delegate(UITextField textField, NSRange range, string replacementString)
        {
            return (range.Location + replacementString.Length) <= 4; // MaxLength == 4
        };
Απαντήθηκε 01/03/2016 στις 13:41
πηγή χρήστη

ψήφοι
1

Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    guard let text = textField.text else { return true }
    let newLength = text.count + string.count - range.length
    return newLength <= 10
}
Απαντήθηκε 09/02/2018 στις 17:07
πηγή χρήστη

ψήφοι
1

Το έκανα αυτό το Swift για ορίου 8 χαρακτήρων όταν χρησιμοποιείτε ένα αριθμητικό πληκτρολόγιο.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    return !(textField.text?.characters.count == MAX_LENGTH && string != "")
}

Έπρεπε να δοκιμάσει για κλωστή! = «» Για να επιτρέψει το κουμπί διαγραφής για να εργαστούν στο αριθμητικό πληκτρολόγιο, αλλιώς δεν θα επέτρεπε τη διαγραφή χαρακτήρων στο πεδίο κειμένου αφού έφτασε το μέγιστο του.

Απαντήθηκε 20/01/2016 στις 20:06
πηγή χρήστη

ψήφοι
1

Χρησιμοποιήστε αυτόν τον κωδικό εδώ RESTRICTED_LENGTH είναι το μήκος που θέλετε να περιορίσουν για πεδίο κειμένου.

   - (BOOL)textField:(UITextField *)textField     shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == nameTF) {
    int limit = RESTRICTED_LENGTH - 1;
    return !([textField.text length]>limit && [string length] > range.length);
    }
   else
   {
    return YES;
   }

return NO;

}
Απαντήθηκε 30/09/2015 στις 10:36
πηγή χρήστη

ψήφοι
1

Έχω ανοιχτή προέρχονται μια υποκατηγορία UITextField, STATextField , που προσφέρει αυτή τη δυνατότητα (και πολλά άλλα) με τους maxCharacterLengthιδιότητα.

Απαντήθηκε 17/06/2015 στις 01:02
πηγή χρήστη

ψήφοι
1

Έχω εφαρμόσει ένα Παράταση UITextField να προσθέσετε ένα ακίνητο maxlength σε αυτό.

Είναι βασισμένο σε Xcode 6 IBInspectables, ώστε να μπορείτε να ρυθμίσετε το όριο maxlength στο οικοδόμος Interface.

Εδώ είναι η εφαρμογή:

UITextField + MaxLength.h

#import <UIKit/UIKit.h>

@interface UITextField_MaxLength : UITextField<UITextFieldDelegate>

@property (nonatomic)IBInspectable int textMaxLength;
@end

UITextField + MaxLength.m

#import "UITextField+MaxLength.h"

@interface UITextField_MaxLength()

@property (nonatomic, assign) id <UITextFieldDelegate> superDelegate;

@end

@implementation UITextField_MaxLength

- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    //validate the length, only if it's set to a non zero value
    if (self.textMaxLength>0) {
        if(range.length + range.location > textField.text.length)
            return NO;

        if (textField.text.length+string.length - range.length>self.textMaxLength) {
            return NO;
        }
    }

    //if length validation was passed, query the super class to see if the delegate method is implemented there
    if (self.superDelegate && [self.superDelegate respondsToSelector:@selector(textField:shouldChangeCharactersInRange:replacementString:)]) {
        return [self.superDelegate textField:textField shouldChangeCharactersInRange:range replacementString:string];
    }
    else{
        //if the super class does not implement the delegate method, simply return YES as the length validation was passed
        return YES;
    }
}

- (void)setDelegate:(id<UITextFieldDelegate>)delegate {
    if (delegate == self)
        return;
    self.superDelegate = delegate;
    [super setDelegate:self];
}

//forward all non overriden delegate methods
- (id)forwardingTargetForSelector:(SEL)aSelector {
    if ([self.superDelegate  respondsToSelector:aSelector])
        return self.superDelegate;

    return [super forwardingTargetForSelector:aSelector];
}

- (BOOL)respondsToSelector:(SEL)aSelector {
    if ([self.superDelegate respondsToSelector:aSelector])
        return YES;

    return [super respondsToSelector:aSelector];
}
@end
Απαντήθηκε 28/11/2014 στις 17:48
πηγή χρήστη

ψήφοι
1

Πήρε κάτω σε 1 γραμμή κώδικα :)

Ορισμός εκπροσώπου προβολή κειμένου σας, για να «αυτο», στη συνέχεια, προσθέστε το <UITextViewDelegate>στο .h σας και τον κωδικό στο .m σας .... μπορείτε να ρυθμίσετε τον αριθμό «7» είναι ό, τι θέλετε Μέγιστος αριθμός σας χαρακτήρες να είναι.

-(BOOL)textView:(UITextView *)a shouldChangeTextInRange:(NSRange)b replacementText:(NSString *)c {
    return ((a.text.length+c.length<=7)+(c.length<1)+(b.length>=c.length)>0);
}

Αυτός ο κωδικός αντιπροσωπεύει την πληκτρολόγηση νέους χαρακτήρες, διαγραφή χαρακτήρων, επιλέγοντας χαρακτήρες στη συνέχεια, πληκτρολογώντας ή διαγραφή, επιλέγοντας χαρακτήρες και κοπή, επικόλληση σε γενικές γραμμές, και επιλέγοντας χαρακτήρες και επικόλληση.

Εγινε!






Εναλλακτικά, ένας άλλος έξυπνος τρόπος για να γράψω αυτό το κώδικα με λίγο-επιχειρήσεις θα

-(BOOL)textView:(UITextView *)a shouldChangeTextInRange:(NSRange)b replacementText:(NSString *)c {
    return 0^((a.text.length+c.length<=7)+(c.length<1)+(b.length>=c.length));
}
Απαντήθηκε 13/12/2013 στις 07:16
πηγή χρήστη

ψήφοι
1

τώρα πόσοι χαρακτήρες και θέλουν δώσει ακριβώς τις αξίες

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range   replacementString:(NSString *)string {
     NSUInteger newLength = [textField.text length] + [string length] - range.length;
     return (newLength > 25) ? NO : YES;
  }
Απαντήθηκε 26/11/2013 στις 12:30
πηγή χρήστη

ψήφοι
1

Άλλες απαντήσεις δεν χειριστεί την περίπτωση κατά την οποία ο χρήστης μπορεί να επικολλήσετε μια μακρά σειρά από το πρόχειρο. Αν μπορώ να επικολλήσετε μια μακρά σειρά θα πρέπει απλά να περικοπεί και εμφανίζονται. Χρησιμοποιήστε αυτό το πληρεξούσιο σας:

static const NSUInteger maxNoOfCharacters = 5;

-(IBAction)textdidChange:(UITextField * )textField
{
NSString * text = textField.text;

if(text.length > maxNoOfCharacters)
{
    text = [text substringWithRange:NSMakeRange(0, maxNoOfCharacters)];
    textField.text = text;
}

// use 'text'

}
Απαντήθηκε 04/04/2013 στις 06:39
πηγή χρήστη

ψήφοι
0

Swift 4.2+

Με την εφαρμογή UITextFieldDelegateμεθόδου

...
let MAX_LENGTH = 256
...

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    var newText = ""
    // always zero when we add characted
    if range.length == 0 {
        newText = ((textField.text ?? "") + string).count
    } 
    // delete/cut/copy/paste character(s)
    else if var text = textField.text, let sRange = Range<String.Index>.init(range, in: text) {
        text.removeSubrange(sRange)
        text.insert(contentsOf: string, at: text.index(text.startIndex, offsetBy: range.location))
        newText = text
    }
    return newText.count < MAX_LENGTH
}
Απαντήθηκε 17/06/2019 στις 11:46
πηγή χρήστη

ψήφοι
0

Swift 4.2 και μέθοδος UITextFieldDelegate

Αυτό λειτουργεί για μένα και περιορίζει το πεδίο κειμένου για να έχουν ένα μέγιστο εισόδου 8 χαρακτήρες. Ας ελπίσουμε ότι NSRange τελικά θα αλλάξει σε εμβέλειας, αλλά προς το παρόν είμαι στην ευχάριστη θέση να χρησιμοποιήσει NSString η δημιουργία μιας περιοχής από NSRange περιλαμβάνει ασχολούνται με μια άλλη προαιρετική.

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let text = textField.text ?? ""
    let nsString = text as NSString
    let newText = nsString.replacingCharacters(in: range, with: string)
    return newText.count <= 8
}
Απαντήθηκε 20/03/2019 στις 00:40
πηγή χρήστη

ψήφοι
0

Τι γίνεται με αυτήν την απλή προσέγγιση. πρόστιμο που εργάζονται για μένα.

extension UITextField {

    func  charactersLimit(to:Int) {

        if (self.text!.count > to) {
            self.deleteBackward()
        }
    }
}

Επειτα:

someTextField.charactersLimit(to:16)
Απαντήθηκε 04/09/2018 στις 21:44
πηγή χρήστη

ψήφοι
0

Χρησιμοποιήστε την παρακάτω επέκταση για UITextFieldκαι UITextViewόρια χαρακτήρων.

    private var kAssociationKeyMaxLength: Int = 0

    extension UITextField {


        @IBInspectable var maxLength: Int {
            get {
                if let length = objc_getAssociatedObject(self, &kAssociationKeyMaxLength) as? Int {
                    return length
                } else {
                    return Int.max
                }
            }
            set {
                objc_setAssociatedObject(self, &kAssociationKeyMaxLength, newValue, .OBJC_ASSOCIATION_RETAIN)
                addTarget(self, action: #selector(checkMaxLength), for: .editingChanged)
            }
        }

        @objc func checkMaxLength(textField: UITextField) {
            guard let prospectiveText = self.text,
                prospectiveText.count > maxLength
                else {
                    return
            }

            let selection = selectedTextRange

            let indexEndOfText = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
            let substring = prospectiveText[..<indexEndOfText]
            text = String(substring)

            selectedTextRange = selection
        }
    }

    extension UITextView:UITextViewDelegate {


    @IBInspectable var maxLength: Int {
        get {
            if let length = objc_getAssociatedObject(self, &kAssociationKeyMaxLength) as? Int {
                return length
            } else {
                return Int.max
            }
        }
        set {
            self.delegate = self

            objc_setAssociatedObject(self, &kAssociationKeyMaxLength, newValue, .OBJC_ASSOCIATION_RETAIN)
        }
    }

    public func textViewDidChange(_ textView: UITextView) {
        checkMaxLength(textField: self)
    }
    @objc func checkMaxLength(textField: UITextView) {
        guard let prospectiveText = self.text,
            prospectiveText.count > maxLength
            else {
                return
        }

        let selection = selectedTextRange

        let indexEndOfText = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
        let substring = prospectiveText[..<indexEndOfText]
        text = String(substring)

        selectedTextRange = selection
    }
}

Μπορείτε να ρυθμίσετε κάτω από το όριο.

εισάγετε περιγραφή της εικόνας εδώ

Απαντήθηκε 26/07/2018 στις 13:30
πηγή χρήστη

ψήφοι
0

Μπορείτε επίσης να το κάνετε αυτό χρησιμοποιώντας NotificationCenter στο Swift 4

NotificationCenter.default.addObserver(self, selector: #selector(self.handleTextChange(recognizer:)), name: NSNotification.Name.UITextFieldTextDidChange, object: yourTextField)

    @objc func handleTextChange(recognizer: NSNotification) {
            //max length is 50 charater max
            let textField = recognizer.object as! UITextField

            if((textField.text?.count)! > 50) {
                let newString: String? = (textField.text as NSString?)?.substring(to: 50)
                textField.text = newString

            }         
        }
Απαντήθηκε 06/06/2018 στις 12:57
πηγή χρήστη

ψήφοι
0

Δίνω μια συμπληρωματική απάντηση με βάση @Frouo. Νομίζω ότι η απάντησή του είναι το πιο όμορφο τρόπο. Becuase είναι ένας κοινός έλεγχος που μπορείτε να χρησιμοποιήσετε ξανά.

private var kAssociationKeyMaxLength: Int = 0

extension UITextField {

    @IBInspectable var maxLength: Int {
        get {
            if let length = objc_getAssociatedObject(self, &kAssociationKeyMaxLength) as? Int {
                return length
            } else {
                return Int.max
            }
        }
        set {
            objc_setAssociatedObject(self, &kAssociationKeyMaxLength, newValue, .OBJC_ASSOCIATION_RETAIN)
            self.addTarget(self, action: #selector(checkMaxLength), for: .editingChanged)
        }
    }

    func checkMaxLength(textField: UITextField) {

        guard !self.isInputMethod(), let prospectiveText = self.text,
            prospectiveText.count > maxLength
            else {
                return
        }

        let selection = selectedTextRange
        let maxCharIndex = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
        text = prospectiveText.substring(to: maxCharIndex)
        selectedTextRange = selection
    }

    //The method is used to cancel the check when use Chinese Pinyin input method.
    //Becuase the alphabet also appears in the textfield when inputting, we should cancel the check.
    func isInputMethod() -> Bool {
        if let positionRange = self.markedTextRange {
            if let _ = self.position(from: positionRange.start, offset: 0) {
                return true
            }
        }
        return false
    }

}
Απαντήθηκε 06/02/2018 στις 12:51
πηγή χρήστη

ψήφοι
0

για Swift 3.1 ή νεότερη έκδοση

πρώτον προσθέστε πρωτόκολλο UITextFieldDelegate

σαν:-

class PinCodeViewController: UIViewController, UITextFieldDelegate { 
.....
.....
.....

}

μετά από αυτό να δημιουργήσει UITextField σας και να ορίσετε εκπρόσωπο

Συμπληρώστε Exp: -

import UIKit

class PinCodeViewController: UIViewController, UITextFieldDelegate {

let pinCodetextField: UITextField = {
    let tf = UITextField()
    tf.placeholder = "please enter your pincode"
    tf.font = UIFont.systemFont(ofSize: 15)
    tf.borderStyle = UITextBorderStyle.roundedRect
    tf.autocorrectionType = UITextAutocorrectionType.no
    tf.keyboardType = UIKeyboardType.numberPad
    tf.clearButtonMode = UITextFieldViewMode.whileEditing;
    tf.contentVerticalAlignment = UIControlContentVerticalAlignment.center
 return tf
  }()


 override func viewDidLoad() {
   super.viewDidLoad()
   view.addSubview(pinCodetextField)
    //----- setup your textfield anchor or position where you want to show it----- 


    // after that 
pinCodetextField.delegate = self // setting the delegate

 }
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    return !(textField.text?.characters.count == 6 && string != "")
     } // this is return the maximum characters in textfield 
    }
Απαντήθηκε 28/06/2017 στις 12:26
πηγή χρήστη

ψήφοι
0

Θέλω να προσθέσω στην απάντηση που έδωσε @sickp.

Υπάρχει ένα θέμα στο έργο του Swiftκώδικα που εμφανίζεται με οποιοδήποτε κείμενο πολλών byte (π.χ. emojis). NSRangeκαι Stringστο Swiftνα μην είναι συμβατά, έτσι είναι απογοητευτικό ότι η κατηγορία πληρεξούσιος τις συνδυάζει. Το κόλπο είναι απλά να μετατρέψει τα Stringαντικείμενα για NSStringτη σωστή λύση, με βάση το τι @sickp έγραψε, είναι στην πραγματικότητα αυτό:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let currentText = (textField.text as NSString?) ?? NSString()
    let currentCharacterCount = currentText.length
    if range.length + range.location > currentCharacterCount {
        return false
    }
    let newLength = currentText.replacingCharacters(in: range, with: string).characters.count
    return newLength <= 25
}
Απαντήθηκε 07/04/2017 στις 17:18
πηγή χρήστη

ψήφοι
0

Αν ο σκοπός της περιορισμό μετράνε κειμένου είναι να διασφαλιστεί ότι το κείμενο θα ταιριάζει σε ένα UILabel αλλού, θα ήθελα να αποφύγετε τη χρήση καταμέτρηση χαρακτήρων. Αναλύεται με κάποια emoji (που προσπαθεί να περικόψει ένα emoji διπλό μέγεθος θα συντριβή πιθανό η εφαρμογή σας). Είναι επίσης ένα θέμα με κάποιες γλώσσες όπως ιαπωνικά και κινέζικα, τα οποία έχουν μια διαδικασία εισόδου σε δύο στάδια, όπου μια απλή καταμέτρηση απλά δεν θα λειτουργήσει.

Έφτιαξα ένα drop-in υποκατηγορία UITextField ( MPC_CharacterLimitedTextField στο GitHub ). Μπορείτε να τροφοδοτήσει την αναμενόμενη πλάτος της ετικέτας εξόδου και θα χειριστεί όλες τις γλώσσες, emoticon και θέματα επικόλληση. Θα συγκομιδή μόνο όσες πλήρη χαρακτήρες που θα ταιριάζει στην ετικέτα, ανεξάρτητα από τον αριθμό των χαρακτήρων. Υπάρχει ένα demo του έργου ώστε να μπορείτε να ελέγξετε για να δείτε αν είναι αυτό που χρειάζεστε. Ελπίζω ότι θα βοηθήσει όποιον είχε έχοντας τα ίδια προβλήματα με το μήκος της εξόδου που ήμουν.

Απαντήθηκε 30/11/2016 στις 06:05
πηγή χρήστη

ψήφοι
0

Για Swift 2.1+

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if (range.length + range.location > textField.text!.characters.count )
    {
        return false;
    }

    let newLength = textField.text!.characters.count + string.characters.count - range.length
    return newLength <= 25
}

Η ελπίδα αυτό βοηθά

Απαντήθηκε 03/11/2015 στις 23:54
πηγή χρήστη

ψήφοι
0

Ελαφρώς πέρα ​​από την απάντηση στο αρχικό ερώτημα, και την επέκταση σε απάντηση Frouo, είναι εδώ επεκτάσεις για να τακτοποιήσει μια σειρά από κενά και σε μέγιστο μήκος, και να χρησιμοποιεί αυτές τις επεκτάσεις String να περικόψετε ένα UITextField σε μέγιστο μήκος:

// In String_Extensions.swift

extension String {

  func trimmedString() -> String {
    var trimmedString = self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
    let components = trimmedString.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter { count($0) > 0 }
    return " ".join(components)
  }

  func trimmedStringToMaxLength(maxLength: Int) -> String {
    return trimmedString().substringToIndex(advance(startIndex, min(count(self), maxLength))).trimmedString()
  }

}

// In UITextField_Extensions.swift

private var maxLengthDictionary = [UITextField : Int]()
private var textFieldMaxLength = 20

extension UITextField {

  @IBInspectable var maxLength: Int {
    get {
      if let maxLength = maxLengthDictionary[self] {
        return maxLength
      } else {
        return textFieldMaxLength
      }
    }
    set {
      maxLengthDictionary[self] = newValue < textFieldMaxLength + 1 ? newValue : textFieldMaxLength
    }
  }

  func trimAndLimitToMaxLength() {
    text = text.trimmedStringToMaxLength(maxLength)
  }

}

let someTextField = UITextField()
let someString = "   This   is   a   string   that   is longer than allowable for a text field.   "
someTextField.text = someString
someTextField.trimAndLimitToMaxLength()
println(someTextField.text) // Prints "This is a string tha"
let anotherTextField = UITextField()
anotherTextField.maxLength = 5
anotherTextField.text = someString
anotherTextField.trimAndLimitToMaxLength()
println(anotherTextField.text) // Prints "This"

trimAndLimitToMaxLength()θα μπορούσε να χρησιμοποιηθεί σε UITextFieldDelegate του textFieldDidEndEditing(_:)έτσι ώστε ένας χρήστης θα μπορούσε να εισέλθει ή επικόλληση σε ένα περισσότερο από αποδεκτή συμβολοσειρά και στη συνέχεια να συντομεύσει το vs. ακριβώς κόβοντας την είσοδο στο μέγιστο μήκος. Με τον τρόπο αυτό, θα ήθελα να ρυθμίσετε αποδίδεται και στυλ κειμένου να αναφέρει οποιοδήποτε τμήμα του κειμένου που υπερβαίνει το αποδεκτό μήκος (π.χ.,[NSBackgroundColorAttributeName : UIColor.redColor(), NSForegroundColorAttributeName : UIColor.whiteColor(), NSStrikethroughStyleAttributeName : NSNumber(int: 1)]

Απαντήθηκε 01/05/2015 στις 11:25
πηγή χρήστη

ψήφοι
0

Αυτό περιορίζει τον αριθμό των χαρακτήρων, αλλά επίσης να βεβαιωθείτε ότι μπορείτε να επικολλήσετε στον τομέα μέχρι το ανώτατο όριο.

- (void)textViewDidChange:(UITextView *)textView
{
    NSString* str = [textView text];
    str = [str substringToIndex:MIN(1000,[str length])];
    [textView setText:str];

    if([str length]==1000) {
        // show some label that you've reached the limit of 1000 characters
    }
}
Απαντήθηκε 27/05/2014 στις 21:10
πηγή χρήστη

ψήφοι
0

μπορούμε να καθορίσουμε το εύρος του πεδίου κειμένου όπως αυτό ..

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string
{
     int setrange = 20;
     return !([textField.text length]>setrange && [string length] > range.length);
}
Απαντήθηκε 20/05/2014 στις 11:51
πηγή χρήστη

ψήφοι
0
(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    if ([txt_name.text length]>100)
    {
        return NO;
    }

    return YES;
}
Απαντήθηκε 19/05/2014 στις 15:48
πηγή χρήστη

ψήφοι
0

Το πρόβλημα με κάποια από την απάντηση που δόθηκε παραπάνω είναι, για παράδειγμα, έχω ένα πεδίο κειμένου και πρέπει να τεθεί ένα όριο εισόδου 15 χαρακτήρες, τότε σταματά μετά την είσοδό του 15ου χαρακτήρων. αλλά δεν αφήνετε να διαγράψετε. Αυτό είναι το πλήκτρο διαγραφής και δεν λειτουργούν. Καθώς αντιμετώπιζε το ίδιο πρόβλημα. Βγήκε με το διάλυμα, που δίνονται παρακάτω. Λειτουργεί τέλεια για μένα

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
 if(textField.tag==6)
 {
    if ([textField.text length]<=30)
    {
        return YES;   
    }
    else if([@"" isEqualToString:string])
    {
        textField.text=[textField.text substringToIndex:30 ];
    }

    return NO;
 }
 else
 {
    return YES;
 }
}

Έχω ένα πεδίο κειμένου, του οποίου η ετικέτα έχω θέσει «6» και έχω περιορίσει το όριο char max = 30? λειτουργεί καλά σε κάθε περίπτωση

Απαντήθηκε 21/03/2014 στις 15:36
πηγή χρήστη

ψήφοι
-1
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (textField.text.length >= 50) {
        return NO;
    }
    return YES;
}
Απαντήθηκε 29/04/2015 στις 07:02
πηγή χρήστη

ψήφοι
-6

Βρήκα αυτό το γρήγορο και απλό

- (IBAction)backgroundClick:(id)sender {
    if (mytext.length <= 7) {
        [mytext resignFirstResponder];
    } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Too Big" 
                                                        message:@"Please Shorten Name"
                                                       delegate:nil 
                                              cancelButtonTitle:@"Cancel"
                                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}
Απαντήθηκε 19/03/2010 στις 21:54
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more