প্রোগ্রামিয়ালি ইউআইটিেক্সটফিল্ড কীবোর্ডের ধরণ পরিবর্তন করুন


175

কোনও ইউটেক্সটফিল্ডের কীবোর্ডের ধরণের প্রোগ্রামটি প্রোগ্রামগতভাবে পরিবর্তন করা সম্ভব যাতে এর মতো কিছু সম্ভব হয়:

if(user is prompted for numeric input only)
    [textField setKeyboardType: @"Number Pad"];

if(user is prompted for alphanumeric input)
    [textField setKeyboardType: @"Default"];

3
আমি আপনাকে এই শব্দটি doozyএমন কিছুতে পরিবর্তন করতে পরামর্শ দিচ্ছি যা বেশি সাধারণভাবে বোধগম্য হয় .. মনে রাখবেন SO একটি আন্তর্জাতিক সাইট এবং উত্তর আমেরিকার কোনও নয়
আবদু

উত্তর:


371

এর জন্য একটি keyboardTypeসম্পত্তি আছে UITextField:

typedef enum {
    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,             // A number pad including a decimal point
    UIKeyboardTypeTwitter,                // Optimized for entering Twitter messages (shows # and @)
    UIKeyboardTypeWebSearch,              // Optimized for URL and search term entry (shows space and .)

    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated

} UIKeyboardType;

আপনার কোড পড়া উচিত

if(user is prompted for numeric input only)
    [textField setKeyboardType:UIKeyboardTypeNumberPad];

if(user is prompted for alphanumeric input)
    [textField setKeyboardType:UIKeyboardTypeDefault];

7
নোট করুন যে এটি কোনও চতুর / অস্বচ্ছল ব্যবহারকারীকে অন্যান্য অক্ষরগুলিতে প্রবেশ করা থেকে বিরত রাখে না। উদাহরণস্বরূপ: ইমোজি কীবোর্ড যদি তারা আপনার নম্বর ক্ষেত্রটি ট্যাপ করার আগে সক্রিয় থাকে তবে তারা এতে হাসি মুখগুলি টাইপ করতে পারে। এটি সম্পর্কে আপনি করার মতো কিছুই নেই, এবং এটি অবশ্যই অ্যাপল বাগ রয়েছে, তবে আপনি নিশ্চিত হওয়া উচিত যে কোনও নম্বর ক্ষেত্রে নন-নম্বর পেলে আপনার কোডটি ক্রাশ না হয়ে গেছে।
স্টিভেন ফিশার

আজ খুঁজে পাওয়া গেছে, এটি UITextInputTraitsপ্রোটোকলের একটি সম্পত্তি যা UITextFieldগ্রহণ করে।
রওনাক

1
ওয়েবভিউতে লোড হওয়া এইচটিএমএল ইনপুট ক্ষেত্রগুলির জন্য কি কিবোর্ডের টাইপটিকে ইউআইকিবোর্ডটাইপ নাম্বার এবং সারণি হিসাবে প্রোগ্রামিয়ালি পরিবর্তন করা সম্ভব?
শ্রীনী

আমি প্রজেক্টে নিজ নিজ কীবোর্ড প্রকারের সাথে একটি প্রকল্পে ইউটেক্সটফিল্ড তৈরি করেছি। এই কয়েক দিন আগে জেগে উঠেছে। কিন্তু এখন এটি কাজ হয় না। আসল কারণ পাচ্ছেন না
রাহুল ফাতে

78

এটি লক্ষণীয় যে আপনি যদি বর্তমানে-কেন্দ্রীভূত ক্ষেত্রটি কীবোর্ডের প্রকারটি অবিলম্বে আপডেট করতে চান তবে একটি অতিরিক্ত পদক্ষেপ আছে:

// textField is set to a UIKeyboardType other than UIKeyboardTypeEmailAddress

[textField setKeyboardType:UIKeyboardTypeEmailAddress];
[textField reloadInputViews];

কল reloadInputViewsনা করে, নির্বাচিত ক্ষেত্রটি ( প্রথম প্রতিক্রিয়াকারী ) হারানো এবং ফোকাস ফিরে না পাওয়া পর্যন্ত কীবোর্ডটি পরিবর্তন হবে না ।

UIKeyboardTypeমানগুলির একটি সম্পূর্ণ তালিকা এখানে পাওয়া যাবে , বা:

typedef enum : NSInteger {
    UIKeyboardTypeDefault,
    UIKeyboardTypeASCIICapable,
    UIKeyboardTypeNumbersAndPunctuation,
    UIKeyboardTypeURL,
    UIKeyboardTypeNumberPad,
    UIKeyboardTypePhonePad,
    UIKeyboardTypeNamePhonePad,
    UIKeyboardTypeEmailAddress,
    UIKeyboardTypeDecimalPad,
    UIKeyboardTypeTwitter,
    UIKeyboardTypeWebSearch,
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable
} UIKeyboardType;

এটি জানার জন্য দরকারী তথ্য- আমি কেবলমাত্র মনোনিবেশ করা ক্ষেত্রের ইনপুট পরিবর্তন সম্পর্কে তথ্য বের করার জন্য একটি প্রশ্নোত্তর ও এ-স্টাইলের স্ব-
উত্তরযুক্ত

1
এটিও উল্লেখযোগ্য যে, বর্তমানে পাঠ্যক্ষেত্রটিতে পুনরায় লোড ইনপুটভিউগুলিকে কল করা কীবোর্ডের ধরণটি তত্ক্ষণাত পরিবর্তন করবে না। তাই আরও ভাল কল করুন [পাঠ্যক্ষেত্রটি ফার্স্ট রিস্পন্ডার হয়ে উঠুন] প্রথমে তারপরে [টেক্সটফিল্ড রিলোডলোড ইনপুটভিউস]
কিউল্যাং

1
এটি ছিল [textField reloadInputViews];যে আমি নিখোঁজ ছিল। ধন্যবাদ!
ইসলাম Q.

1
কলিং reloadInputViewsbespoke UITextInputবাস্তবায়নের জন্যও কাজ করে ।
পল গার্ডিনার


9
    textFieldView.keyboardType = UIKeyboardType.PhonePad

এটি দ্রুতগতির জন্য। এছাড়াও এটি সঠিকভাবে কাজ করার জন্য এটি অবশ্যই পরে সেট করা উচিতtextFieldView.delegate = self


7

পাঠ্য ক্ষেত্রটিকে আলফা সংখ্যাকে গ্রহণ করতে কেবল এই সম্পত্তিটি সেট করে

textField.keyboardType = UIKeyboardTypeNamePhonePad;

6
_textField .keyboardType = UIKeyboardTypeAlphabet;
_textField .keyboardType = UIKeyboardTypeASCIICapable;
_textField .keyboardType = UIKeyboardTypeDecimalPad;
_textField .keyboardType = UIKeyboardTypeDefault;
_textField .keyboardType = UIKeyboardTypeEmailAddress;
_textField .keyboardType = UIKeyboardTypeNamePhonePad;
_textField .keyboardType = UIKeyboardTypeNumberPad;
_textField .keyboardType = UIKeyboardTypeNumbersAndPunctuation;
_textField .keyboardType = UIKeyboardTypePhonePad;
_textField .keyboardType = UIKeyboardTypeTwitter;
_textField .keyboardType = UIKeyboardTypeURL;
_textField .keyboardType = UIKeyboardTypeWebSearch;

5

সুইফট 4

কোনও শর্ত পূরণ হওয়ার পরে আপনি যদি আপনার কীবোর্ডের প্রকারটি পরিবর্তন করার চেষ্টা করছেন তবে এটি অনুসরণ করুন। উদাহরণস্বরূপ: আমরা যদি পাঠ্যক্ষেত্রের গণনা 4 বা 5 এর মধ্যে ডিফল্ট থেকে নম্বর প্যাডে কীবোর্ডের ধরনটি পরিবর্তন করতে চাই , তবে এটি করুন:

textField.addTarget(self, action: #selector(handleTextChange), for: .editingChanged)

@objc func handleTextChange(_ textChange: UITextField) {
 if textField.text?.count == 4 || textField.text?.count == 5 {
   textField.keyboardType = .numberPad
   textField.reloadInputViews() // need to reload the input view for this to work
 } else {
   textField.keyboardType = .default
   textField.reloadInputViews()
 }

2

এই কল জন্য একটি সম্পত্তি আছে keyboardType। আপনি যা করতে চান তা হ'ল আপনার যেখানে স্ট্রিং রয়েছে @"Number Padএবং এর @"Defaultসাথে UIKeyboardTypeNumberPadএবং UIKeyboardTypeDefault

আপনার নতুন কোডটি দেখতে এরকম কিছু হওয়া উচিত:

if(user is prompted for numeric input only)
    [textField setKeyboardType:UIKeyboardTypeNumberPad];

else if(user is prompted for alphanumeric input)
    [textField setKeyboardType:UIKeyboardTypeDefault];

শুভকামনা!


1

যারা UIDatePickerইনপুট হিসাবে ব্যবহার করতে চান তাদের জন্য :

UIDatePicker *timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 0, 0)];
[timePicker addTarget:self action:@selector(pickerChanged:)
     forControlEvents:UIControlEventValueChanged];
[_textField setInputView:timePicker];

// pickerChanged:
- (void)pickerChanged:(id)sender {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"d/M/Y"];
    _textField.text = [formatter stringFromDate:[sender date]];
}

1

এটি UIKeyboardTypesসুইফট 3 এর জন্য:

public enum UIKeyboardType : Int {

    case `default` // Default type for the current input method.
    case asciiCapable // Displays a keyboard which can enter ASCII characters
    case numbersAndPunctuation // Numbers and assorted punctuation.
    case URL // A type optimized for URL entry (shows . / .com prominently).
    case numberPad // A number pad with locale-appropriate digits (0-9, ۰-۹, ०-९, etc.). Suitable for PIN entry.
    case phonePad // A phone pad (1-9, *, 0, #, with letters under the numbers).
    case namePhonePad // A type optimized for entering a person's name or phone number.
    case emailAddress // A type optimized for multiple email address entry (shows space @ . prominently).

    @available(iOS 4.1, *)
    case decimalPad // A number pad with a decimal point.

    @available(iOS 5.0, *)
    case twitter // A type optimized for twitter text entry (easy access to @ #)

    @available(iOS 7.0, *)
    case webSearch // A default keyboard type with URL-oriented addition (shows space . prominently).

    @available(iOS 10.0, *)
    case asciiCapableNumberPad // A number pad (0-9) that will always be ASCII digits.


    public static var alphabet: UIKeyboardType { get } // Deprecated
}

তালিকা থেকে কীবোর্ড প্রকারটি ব্যবহার করার এটি উদাহরণ example

textField.keyboardType = .numberPad

0

প্রোগ্রামিয়ালি ইউআইটিেক্সটফিল্ড কীবোর্ড টাইপ সুইফট 3.0 পরিবর্তন করুন

lazy var textFieldTF: UITextField = {

    let textField = UITextField()
    textField.placeholder = "Name"
    textField.frame = CGRect(x:38, y: 100, width: 244, height: 30)
    textField.textAlignment = .center
    textField.borderStyle = UITextBorderStyle.roundedRect
    textField.keyboardType = UIKeyboardType.default //keyboard type
    textField.delegate = self
    return textField 
}() 
override func viewDidLoad() {
    super.viewDidLoad()
    view.addSubview(textFieldTF)
}

0

এখানে সুইফট ৪.২-তে কী-বোর্ডের ধরণ রয়েছে

// UIKeyboardType
//
// Requests that a particular keyboard type be displayed when a text widget
// becomes first responder. 
// Note: Some keyboard/input methods types may not support every variant. 
// In such cases, the input method will make a best effort to find a close 
// match to the requested type (e.g. displaying UIKeyboardTypeNumbersAndPunctuation 
// type if UIKeyboardTypeNumberPad is not supported).
//
public enum UIKeyboardType : Int {


    case `default` // Default type for the current input method.

    case asciiCapable // Displays a keyboard which can enter ASCII characters

    case numbersAndPunctuation // Numbers and assorted punctuation.

    case URL // A type optimized for URL entry (shows . / .com prominently).

    case numberPad // A number pad with locale-appropriate digits (0-9, ۰-۹, ०-९, etc.). Suitable for PIN entry.

    case phonePad // A phone pad (1-9, *, 0, #, with letters under the numbers).

    case namePhonePad // A type optimized for entering a person's name or phone number.

    case emailAddress // A type optimized for multiple email address entry (shows space @ . prominently).

    @available(iOS 4.1, *)
    case decimalPad // A number pad with a decimal point.

    @available(iOS 5.0, *)
    case twitter // A type optimized for twitter text entry (easy access to @ #)

    @available(iOS 7.0, *)
    case webSearch // A default keyboard type with URL-oriented addition (shows space . prominently).

    @available(iOS 10.0, *)
    case asciiCapableNumberPad // A number pad (0-9) that will always be ASCII digits.


    public static var alphabet: UIKeyboardType { get } // Deprecated
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.