কোনও ইউআইটিেক্সটফিল্ড সম্পাদনা করার সময় আপনি কী-বোর্ড কীভাবে খারিজ করবেন


181

আমি জানি যে আমি কীবোর্ডটি খারিজ করতে চাইলে আমার ইউআইটিেক্সটফিল্ডকে প্রথম প্রতিক্রিয়াশীলকে পদত্যাগ করতে বলি, তবে কী-বোর্ড কীভাবে "সম্পন্ন" কী টিপেছে তা কীভাবে জানতে হবে তা আমি নিশ্চিত নই। আমি কি বিজ্ঞপ্তি দেখতে পারি?


2
[স্ব-দর্শন সমাপ্তি সম্পাদনা: হ্যাঁ]; ছোঁয়ায় শুরু হওয়া প্রতিনিধি হ'ল সর্বোত্তম সমাধান
জার ই আহমর

উত্তর:


351

আমি UITextFieldআমার ViewControllerক্লাসে এর প্রতিনিধি সেট ।

এই শ্রেণিতে আমি এই পদ্ধতিটি নিম্নলিখিত হিসাবে প্রয়োগ করেছি:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

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

2
এর মধ্যে যে কোনওটিই কাজ করবে - ব্যবহারকারী রিটার্ন ("সম্পন্ন", যাই হোক না কেন) কীটি হিট করে পাঠ্য ক্ষেত্রটি তার ক্রিয়াকলাপ প্রেরণ করে এবং তার প্রতিনিধি-টেক্সটফিল্ডশোল্ডার্টার্টন প্রেরণ করে:
নোহ উইদারস্পুন

বিটিডাব্লু - এটি কোনও ইউআইসন্ধানবারের জন্যও কাজ করে। উদাহরণস্বরূপ, আমার কোডে আমি সদস্য ছিল IBOutlet অনুসন্ধানবার্টসব; যখন আমার 'রিটার্ন কী' (ইউআইআরআইটির্নকি সন্ধান) ক্লিক করা হয়েছিল, - (শূন্য) সন্ধান বার্স সার্চবটন ক্লিক করেছেন:, আমি বিবৃতিটি [সার্চবার্টসবায় পদত্যাগ করেছেন ফার্স্ট রেসপন্ডার] রেখেছি; এছাড়াও মনে রাখবেন, 'রিটার্ন কী' ইন্টারফেস বিল্ডার ব্যবহার করে এনআইবিতে সেট করা হয়েছিল।
মুবিবব

NOপরিবর্তে ফিরে আসবে কেন YES?
আইলিয়ান ওনোফ্রেই

@ আইলিয়ানঅনফ্রেই রিটার্ন বোতামের ডিফল্ট আচরণ হ'ল একটি লাইন রিটার্ন যুক্ত করা এবং কীবোর্ডটিকে অনস্ক্রিনে রেখে যাওয়া। ফিরে আসার মাধ্যমে NOআপনি পাঠ্যে একটি লাইন ফিরে যুক্ত এড়াতে পারবেন।
কুবি

47

আপনি যদি পাঠ্য ক্ষেত্রের ডিডএন্ডঅনএক্সিট ইভেন্টটিকে ইন্টারফেসবিল্ডারের কোনও ক্রিয়া (আইবিএક્શન) এর সাথে সংযুক্ত করেন, যখন ব্যবহারকারী কীবোর্ডটি (রিটার্ন কী সহ) খারিজ করে দেবে এবং প্রেরকটি ইউআইটিেক্সটফিল্ডের একটি উল্লেখ হবে যা ইভেন্টটি বহিষ্কার করেছে।

উদাহরণ স্বরূপ:

-(IBAction)userDoneEnteringText:(id)sender
{
    UITextField theField = (UITextField*)sender;
    // do whatever you want with this text field
}

তারপরে, ইন্টারফেসবিল্ডারে, পাঠ্য ক্ষেত্রের ডিডইডঅনএক্সিট ইভেন্টটিকে আপনার নিয়ামকের এই ক্রিয়াটির সাথে লিঙ্ক করুন (বা আপনি ইউআই থেকে ইভেন্টগুলি লিঙ্ক করতে যা কিছু ব্যবহার করছেন)। যখনই ব্যবহারকারী পাঠ্য প্রবেশ করে এবং পাঠ্য ক্ষেত্রটি খারিজ করে দেয়, নিয়ামকটি এই বার্তাটি প্রেরণ করা হবে।


একমাত্র ইভেন্টটি মনে হতে পারে এটি কাজ করতে পারে টেক্সটফিল্ডডইন্ডএডিটিং, যা কেবলমাত্র ইউআইটিেক্সটফিল্ডের প্রথম প্রতিক্রিয়াশীল স্থিতির পদত্যাগ করার পরে এটি প্রেরণ করা হয়েছিল। আমি যখন প্রথম প্রতিক্রিয়াশীল স্থিতি পদত্যাগ করতে হবে তখন আমি কীভাবে জানব?
কুবি

আমি পরিভাষাটির জন্য দুঃখিত ... এটি কোনও সত্যিকারের বিজ্ঞপ্তি (ইভেন্ট) নয় ... আমি একটি দ্রুত উদাহরণ এবং ব্যাখ্যা দিয়ে আমার উত্তরটি সম্পাদনা করতে যাচ্ছি, তাই দেখুন :)
জেসন কোকো

1
এই উত্তরটি স্পষ্ট করার জন্য, আপনি যখন রিটার্ন কী টিপেছিলেন তখন টেক্সটফিল্ড "ডিড এন্ড প্রস্থান" ইভেন্টটি প্রেরণ করে, যাতে আপনার নিয়ামকের সাথে লিঙ্ক করা দরকার that's আমি মনে করি যে এই পদ্ধতিটি আমি উপরে বর্ণিত পদ্ধতিটির চেয়ে সহজ।
কুবি

2
আপনি কি এই উত্তরটি সম্পাদনা করতে পারেন যাতে এটিতে কোনটি তারের সাথে সংঘটিত হয় তার উল্লেখ থাকে? প্রতিনিধি নির্ধারণের চেয়ে এটি স্পষ্টতই সুন্দর।
ড্যান রোজনস্টার্ক

1
এই উত্তরটিকে উচ্চতর করতে চান, তবে এটি যতক্ষণ না ডিইডঅনঅনেক্সট ইভেন্টটির উল্লেখ করে। সম্পাদনা সুবিধাসহ কেউ যদি ওপি না করে তবে পরিবর্তন করুন?
জেমস হার্ট

32

আপনি নিজের কন্ট্রোলারে একটি পদ্ধতিও তৈরি করতে পারেন

 -(IBAction)editingEnded:(id)sender{
    [sender resignFirstResponder]; 
}

এবং তারপরে আইবিতে সংযোগ পরিদর্শক ইভেন্টটিকে এর সাথে "ডিড এন্ড প্রস্থান" সংযুক্ত করুন।


1
এটি প্রায় ভুল, বা কমপক্ষে এটি পয়েন্টটি মিস করে। DidEndOnExitইভেন্টটি সাবস্ক্রাইব করে , আপনাকে কল করার দরকার নেই resignFirstResponder। আপনি এটি একটি প্রতীকী ব্রেকআপপয়েন্ট রেখে পরীক্ষা করতে পারেন [UIResponder resignFirstResponder]। মনে রাখবেন যে আপনি যদি পদত্যাগপূর্বরপ্সন্ডারকে কল নাও করেন তবুও এটি সিস্টেমের দ্বারা কল হয়ে যায়। এটি ম্যাট নিউবুর্গের
ক্রিস কনভারের

19

কুবি, ধন্যবাদ আপনার কোড কাজ করেছে। শুধু স্পষ্ট হতে (নতুনদের পছন্দ জন্য) আপনি বলতে হিসাবে আপনি সেট করতে UITextField'র delegateViewController যা টেক্সট ক্ষেত্রের বসবাস সমান হতে। আপনি যেখানে খুশি সেখানে এটি করতে পারেন। আমি viewDidLoadপদ্ধতিটি বেছে নিয়েছি ।

- (void)viewDidLoad 
{
    // sets the textField delegates to equal this viewController ... this allows for the keyboard to disappear after pressing done
    daTextField.delegate = self;
}

আপনি যদি আপনার স্টোরিবোর্ডে বা এনআইবিতে পাঠ্য ক্ষেত্রটি যুক্ত করেন delegateতবে আপনিও পাঠ্য ক্ষেত্রটি সেট করতে পারেন । উপরোক্ত হিসাবে যেমনটি আপনার প্রোগ্রামালিকভাবে করতে হবে না। হয় অ্যাপ্রোচ ঠিক আছে।
রব

18

কোনও কোড ছাড়াই স্বয়ংক্রিয় কীবোর্ড বরখাস্ত আচরণ পাওয়ার জন্য এখানে একটি কৌশল। নিবিতে, পরিচয় পরিদর্শকের প্রথম প্রতিক্রিয়াশীল প্রক্সি অবজেক্টটি সম্পাদনা করুন, একটি নতুন প্রথম প্রতিক্রিয়াকারী ক্রিয়া যুক্ত করুন; আসুন এটি কল dummy:dummy:প্রথম প্রতিক্রিয়াকারী প্রক্সি অবজেক্টটির ক্রিয়াতে পাঠ্য ক্ষেত্রের ডিড এন্ড প্রস্থান ইভেন্টটিকে এখন হুক করুন । এটাই! যেহেতু পাঠ্য ক্ষেত্রের ডিড এন্ড প্রস্থান ইভেন্টটিতে এখন একটি ক্রিয়া-লক্ষ্য জোড়া রয়েছে, ব্যবহারকারী রিটার্নটি ট্যাপ করলে পাঠ্য ক্ষেত্রটি স্বয়ংক্রিয়ভাবে তার কীবোর্ড খারিজ করে দেয়; এবং যেহেতু প্রতিক্রিয়াশীল চেইন প্রেরণ করা বার্তার জন্য কোনও হ্যান্ডলার খুঁজে না পাওয়ার জন্য কোনও জরিমানা নেই, dummy:কোথাও বাস্তবায়ন না হওয়া সত্ত্বেও অ্যাপটি ক্রাশ হয় না ।


@ ম্যাট আমি আবিষ্কার করেছিলাম যে আমি যদি একটি অযাচিত সিগ যুক্ত করি এবং didEndOnExit ইভেন্টটি সংযুক্ত করি তখন রিটার্ন টিপলে আনইন্ড উইন্ডিজটি ট্রিগার করা হবে। ইভেন্ট সংযোগ ছাড়াই সিগু ট্রিগার হয় না। দুর্দান্ত তবে হু? কোন মন্তব্য? বিটিডাব্লু: আমার কাছে আপনার সুইফট (সমাপ্ত) এবং আইওএস 10 (চ্যাপ 6 এ) বই রয়েছে। তারা আমাকে প্রচুর সাহায্য করেছে!
ভার্টিকন

@ ভার্টিকন প্রশ্নোত্তরের সাথে বিভাগগুলির সাথে কিছু করার নেই, সুতরাং আমি বিষয়টি বুঝতে পারি না ... :( এটি নিখুঁতভাবে কীবোর্ড বরখাস্তের বিষয়ে
ম্যাট

@ ম্যাট দুঃখিত, মানুষ। আমি পিগির ব্যাক করছিলাম কারণ 1) আমি ইউআইটিেক্সটফিল্ডের রিটার্ন কী কীভাবে পরিচালনা করব তা নিয়ে কাজ করার সময় আমি এই থ্রেডটিতে এসেছি; এবং 2) আপনার সাথে কথোপকথনের সুযোগ ছিল (দা বইগুলির জন্য thx)। কোনও "ইস্যু" নেই। এটি কেন / কীভাবে এটি কাজ করে তা সম্পর্কে আমার পক্ষ থেকে কেবল বোঝার অভাব।
ভার্টিকন

@ ভার্টিকন সাহায্য না করতে পেরে ক্ষমা চাইছি। আরও তথ্য (ডেমো প্রকল্প?) দিয়ে একটি নতুন প্রশ্ন গঠনে নির্দ্বিধায় এবং আমাকে ব্লিপ করুন, যদি আমি দরকারী হতে পারি।
ম্যাট


11

শুধু যোগ কর

[textField endEditing:YES];

যেখানে আপনি কীবোর্ড অক্ষম করতে এবং চয়নকারী দৃশ্যটি প্রদর্শন করতে চান।


10

সুইফটে আপনি কন্ট্রোলারে একটি আইবিএक्शन লিখতে পারেন এবং পাঠ্য ক্ষেত্রের ডিড এন্ড প্রস্থান ইভেন্টটিকে সেই ক্রিয়াতে সেট করতে পারেন

@IBAction func returnPressed(sender: UITextField) {
    self.view.endEditing(true)
}

5

Swift 4.2 এবং এটি 100% কাজ করবে

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!


    override func viewDidLoad() {
        super.viewDidLoad()

        self.textField.delegate = self

    }

    // hide key board when the user touches outside keyboard

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }

    // user presses return key

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }

}

4

আপনি ব্যবহার করতে পারেন

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
  {

   [self.yourTextField resignFirstResponder];

  }

আপনার অনেকগুলি ইউটেক্সটফিল্ড থাকলে সেরা একটি:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {    
     [self.view endEditing:YES];
 }

2

এটি কাজ করার জন্য এখানে আমাকে যা করতে হয়েছিল তা আমি এখানে দিয়েছি এবং আমি মনে করি যে কীবোর্ডের জন্য নম্বর প্যাডযুক্ত যে কেউ (বা সম্পন্ন বোতাম ছাড়াই অন্য যে কোনও একটির জন্য প্রয়োজনীয়:

  1. আমি ভিউকন্ট্রোলারে থাকা ইউআইভিউকে একটি ইউআইসিএন্ট্রোলতে পরিবর্তন করেছি।
  2. আমি একটি ফাংশন তৈরি করেছি

    -(IBAction)backgroundIsTapped:(id)sender

এটি .h ফাইলে সংজ্ঞায়িতও হয়েছিল।

এর পরে, আমি ইন্টারফেস বিল্ডারে ভিউ কন্ট্রোলারের জন্য 'টাচ ডাউন' বিটের সাথে লিঙ্ক করেছি।

'ব্যাকগ্রাউন্ডটি ট্যাপড' ফাংশনে, আমি এটি রেখেছি:

    [answerField resignFirstResponder];

আপনি যে ইউআইটিেক্সটফিল্ডটি কীবোর্ড থেকে মুছে ফেলতে চান তার নাম 'উত্তরফিল্ড' পরিবর্তন করতে মনে রাখবেন (অবশ্যই আপনার ইউআইটিেক্সটফিল্ড নীচের মত সংজ্ঞায়িত হয়েছে তা নিশ্চিত করুন :)

    IBOutlet UITextField * <nameoftextfieldhere>;

আমি জানি এই টপিকটি সম্ভবত অনেক দিন আগে মারা গিয়েছিল ... তবে আমি আশা করছি এটি কারও কারও সাহায্য করবে, কোথাও!


.. তবে এটি ব্যবহারকারীর অন্য নিয়ন্ত্রণের জন্য ট্যাপ করলে এটি এত ভাল কাজ করে না।
রাশি রাশির

2

আপনি লক্ষ্য করবেন যে পদ্ধতিটি "টেক্সটফিল্ডশোল্ডার্টર્ન" পাঠ্য-ক্ষেত্রের অবজেক্ট সরবরাহ করে যা ডোন কীটিতে আঘাত করেছে। আপনি যদি ট্যাগটি সেট করেন আপনি সেই পাঠ্য ক্ষেত্রে স্যুইচ করতে পারেন। অথবা আপনি অবজেক্টের পয়েন্টারটির নির্মাতা দ্বারা সঞ্চিত কিছু সদস্যের সাথে ট্র্যাক এবং তুলনা করতে পারেন।

আমার দৃষ্টিভঙ্গি স্ব-অধ্যয়নের জন্য এটির মতো:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    NSLog(@"%s", __FUNCTION__);

    bool fDidResign = [textField resignFirstResponder];

    NSLog(@"%s: did %resign the keyboard", __FUNCTION__, fDidResign ? @"" : @"not ");

    return fDidResign;
}

এদিকে, আমি "বৈধতা" পরীক্ষা দিয়েছি যা পদত্যাগের পরে অস্বীকার করে। এটি কেবল উদাহরণের জন্য, সুতরাং ব্যবহারকারী যদি কোনও টাইপ করেন না! মাঠে, এটি বরখাস্ত করবে না। আচরণটি আমি যেমন চেয়েছিলাম তেমন ছিল, তবে আউটপুট ক্রমটি আমার প্রত্যাশা মতো ছিল না।

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    NSLog(@"%s", __FUNCTION__);

    if( [[textField text] isEqualToString:@"NO!"] ) {
        NSLog(@"%@", textField.text);
        return NO;
    } else {
        return YES;
    }
}

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

13.313 স্টাডিবিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার পাঠ্যফিল্ড শোল্ডার রিটার্ন:]
13.320 স্টাডিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার পাঠ্যফিল্ডশোল্ড এন্ড সম্পাদনা:]
13.327 স্টাডিবিডি [109: 207] না!
13.333 স্টাডিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার পাঠ্যফিল্ড শোল্ডার রিটার্ন:]: কীবোর্ড পদত্যাগ করেছেন না
59.891 স্টাডিবিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার পাঠ্যফিল্ড শোল্ডার রিটার্ন:]
59.897 স্টাডিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার পাঠ্যফিল্ডশোল্ড এন্ড সম্পাদনা:]
59.917 স্টাডিবিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার সম্পন্ন সম্পাদনা পাঠ্য]: না
59.928 স্টাডিবিডি [109: 207] - [স্টাডি কেবিডিভিউ কনট্রোলার পাঠ্যফিল্ড শোল্ডার রিটার্ন:]: কীবোর্ড পদত্যাগ করেছেন না

1
আপনি কি ব্যাখ্যা করতে পারেন .. যদি আমি উভয় ক্ষেত্রেই না বা হ্যাঁ ফিরে পাই তবে একই বিষয় হ'ল পাঠ্য ফিল্ড শোল্ডার রিটার্ন ডেলিগেট পদ্ধতিতে হ্যাঁ ফিরে আসার কী দরকার
কে

1

এখানে রিটার্ন কী বা পটভূমির স্পর্শ সহ সংস্করণ শেষ করার বেশ পরিষ্কার উপায়।

ইন্টারফেস বিল্ডারে, ইউআইফর্মভিউ শ্রেণীর দর্শনতে আপনার ক্ষেত্রগুলি এম্বেড করুন

এই শ্রেণিটি কী করে:

  • ক্ষেত্রের প্রতিনিধি হিসাবে স্বয়ংক্রিয়ভাবে নিজেকে সংযুক্ত করুন (হয় নিব থেকে জাগ্রত হয়েছে, বা ম্যানুয়ালি যুক্ত হয়েছে)
  • বর্তমান সম্পাদিত ক্ষেত্রে একটি রেফারেন্স রাখুন
  • ফেরতের সময় কীবোর্ড খারিজ করুন বা পটভূমিতে স্পর্শ করুন

কোডটি এখানে:

ইন্টারফেস

#import <UIKit/UIKit.h>

@interface UIFormView : UIView<UITextFieldDelegate>

-(BOOL)textFieldValueIsValid:(UITextField*)textField;
-(void)endEdit;

@end

বাস্তবায়ন

#import "UIFormView.h"

@implementation UIFormView
{
    UITextField* currentEditingTextField;
}

// Automatically register fields

-(void)addSubview:(UIView *)view
{
    [super addSubview:view];
    if ([view isKindOfClass:[UITextField class]]) {
        if ( ![(UITextField*)view delegate] ) [(UITextField*)view setDelegate:self];
    }
}

// UITextField Protocol

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    currentEditingTextField = textField;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{
    currentEditingTextField = NULL;
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self endEdit];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if ([self textFieldValueIsValid:textField]) {
        [self endEdit];
        return YES;
    } else {
        return NO;
    }
}

// Own functions

-(void)endEdit
{
    if (currentEditingTextField) {
        [currentEditingTextField endEditing:YES];
        currentEditingTextField = NULL;
    }
}


// Override this in your subclass to handle eventual values that may prevent validation.

-(BOOL)textFieldValueIsValid:(UITextField*)textField
{
    return YES;
}

@end
  • ফর্মটি সাবক্লাসিং করে এবং textFieldValueIsValid:পদ্ধতিটিকে ওভাররাইড করে , যদি দেওয়া ক্ষেত্রের জন্য মানটি সঠিক না হয় তবে আপনি সংস্করণটির শেষ এড়াতে পারবেন।

  • ইন্টারফেস বিল্ডারে যদি কোনও ক্ষেত্রের কোনও প্রতিনিধি সেট থাকে তবে ফর্মটি এটি পরিবর্তন করে না। আমি নির্দিষ্ট ক্ষেত্রে আলাদা প্রতিনিধি স্থাপন করার অনেক কারণ দেখছি না, তবে কেন ...

এই ফর্ম দর্শন শ্রেণীর উন্নতি করার জন্য অনেকগুলি উপায় রয়েছে - একটি ডেলিগেট সংযুক্ত করুন, কিছু বিন্যাস করুন, কী-বোর্ডগুলি কোনও ক্ষেত্রটি আবরণ করার সময় হ্যান্ডেল করুন (কারেন্টএডিটিংটেক্সটফিল্ড ফ্রেম ব্যবহার করে), পরবর্তী ক্ষেত্রের জন্য স্বয়ংক্রিয়ভাবে সংস্করণ শুরু করুন, ...

আমি ব্যক্তিগতভাবে এটিকে আমার কাঠামোর মধ্যে রাখি এবং বৈশিষ্ট্যগুলি যুক্ত করতে সর্বদা এটি সাবক্লাস করি, এটি প্রায়শই "যেমন রয়েছে" তেমন কার্যকর।

আমি আশা করি এটি সাহায্য করবে। সবাইকে চিয়ার্স করুন


1
সহায়ক শ্রেণি। একটি ছোট বিষয়, আপনার নিজের ক্লাসগুলি "ইউআই" দিয়ে উপস্থাপন করা উচিত নয়। উদ্দেশ্য-সিতে আপনার নিজের উপসর্গটি ("টিএল"?) ব্যবহার করা উচিত, সুইফটে কোনও কিছুই ব্যবহার করবেন না।
কুবি

ধন্যবাদ @ কুবি। সেটা ঠিক. ); এটা আমার কাঠামোর মধ্যে এম এফ, MooseFactory মত হল
আমেরিকার হরিণবিশেষ

1

আপনি যদি কোনও ইউআইভিউউকন্ট্রোলারে সমস্ত সম্পাদনা চান তবে আপনি ব্যবহার করতে পারেন।

[[self view]endEditing:YES];

এবং আপনি যদি একটি পার্টিকুলার ইউআইটিেক্সটফিল্ড কীবোর্ড লুকাকে খারিজ করতে চান তবে ব্যবহার করুন।

আপনার ভিউকন্ট্রোল.আরে 1. প্রতিনিধি যুক্ত করুন

<UITextFieldDelegate>
  1. আপনার পাঠ্যক্ষেত্রে অক্ষম করুন unable

    self.yourTextField.delegate = স্ব;

  2. আপনার ভিউকন্ট্রোলারে এই পদ্ধতিটি যুক্ত করুন।

    - (BOOL) টেক্সটফিল্ডশোল্ড এন্ড এডিটিং: (ইউআইটিেক্সটফিল্ড *) টেক্সটফিল্ড {[টেক্সটফিল্ডের পদত্যাগপত্রে ফার্স্ট রেসপন্ডার]; প্রত্যাবর্তন হ্যাঁ;}


1

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

আপনার ভিউকন্ট্রোলারআরউইফট ফাইলটিতে ইউআইটিএফেক্সটফিল্ড ডেলিগেটটি প্রয়োগ করুন (উদাহরণস্বরূপ শ্রেণি ভিউ কন্ট্রোলার: ইউআইভিউকন্ট্রোলার, ইউআইটিএফসেক্সফিল্ডডিলিগেট {)

 lazy var firstNameTF: UITextField = {

    let firstname = UITextField()
    firstname.placeholder = "FirstName"
    firstname.frame = CGRect(x:38, y: 100, width: 244, height: 30)
    firstname.textAlignment = .center
    firstname.borderStyle = UITextBorderStyle.roundedRect
    firstname.keyboardType = UIKeyboardType.default
    firstname.delegate = self
    return firstname
}()

lazy var lastNameTF: UITextField = {

    let lastname = UITextField()
    lastname.placeholder = "LastName"
    lastname.frame = CGRect(x:38, y: 150, width: 244, height: 30)
    lastname.textAlignment = .center
    lastname.borderStyle = UITextBorderStyle.roundedRect
    lastname.keyboardType = UIKeyboardType.default
    lastname.delegate = self
    return lastname
}()

lazy var emailIdTF: UITextField = {

    let emailid = UITextField()
    emailid.placeholder = "EmailId"
    emailid.frame = CGRect(x:38, y: 200, width: 244, height: 30)
    emailid.textAlignment = .center
    emailid.borderStyle = UITextBorderStyle.roundedRect
    emailid.keyboardType = UIKeyboardType.default
    emailid.delegate = self
    return emailid
}()

// চিহ্ন: - প্রতিনিধি পাঠ্য ফিল্ড পরিচালনা ...

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    view.endEditing(true)
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    if textField == firstNameTF {

        lastNameTF.becomeFirstResponder()
    }

    else if textField == lastNameTF {

        emailIdTF.becomeFirstResponder()
    }
    else {
        view.emailIdTF(true)
    }
    return true
}

0

একটি ফাংশন হেডকিবোর্ড তৈরি করুন এবং এটি .xib ফাইলের পাঠ্যক্ষেত্রের সাথে লিঙ্ক করুন এবং ডিডএন্ডঅনএক্সিট নির্বাচন করুন

-(IBAction)Hidekeyboard    
{    
      textfield_name.resignFirstResponder;    
}  

0

আপনি যদি ইন্টারফেস বিল্ডার ব্যবহার করে ভিউ তৈরি করে থাকেন তবে নীচে কেবল একটি পদ্ধতি তৈরি করুন,

-(IBAction)dismissKeyboard:(id)sender
{
[sender resignFirstResponder];
}

দৃশ্যে পাঠ্যের ক্ষেত্রে ঠিক ডান ক্লিক করুন, এবং ইভেন্টটিকে ডিড এন্ড প্রস্থান হিসাবে সেট করুন এবং এটিকে "বরখাস্ত কীবোর্ড" পদ্ধতিতে তার করুন।

নতুনদের জন্য সেরা গাইড হলেন "হেড ফার্স্ট আইফোন এবং আইপ্যাড বিকাশ, ২ য় সংস্করণ"


0

এটা চেষ্টা কর

- (BOOL) textView: (UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text
{
    if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    return YES;
}

0
//====================================================
//                  textFieldShouldReturn:
//====================================================
-(BOOL) textFieldShouldReturn:(UITextField*) textField { 
    [textField resignFirstResponder];
    if(textField.returnKeyType != UIReturnKeyDone){
        [[textField.superview viewWithTag: self.nextTextField] becomeFirstResponder];
    }
    return YES;
}

0

যে কেউ খুঁজছেন সুইফট 3

1) আপনার ইউআইটিেক্সটফিল্ডের প্রতিনিধি নিশ্চিত করুন স্টোরিবোর্ডে সাথে তারযুক্ত রয়েছে তা

2) UITextFieldDelegate প্রয়োগ করুন আপনার ফাইলটিতে করুন (উদাহরণস্বরূপ শ্রেণি ভিউকন্ট্রোলার: ইউআইভিউকন্ট্রোলার, ইউআইটিএফসেক্সফিল্ডডিলিগেট {)

3) নীচে প্রতিনিধি পদ্ধতি ব্যবহার করুন

func textFieldShouldReturn(textField: UITextField) -> Bool { 
   textField.resignFirstResponder()  
return false }

0

এইভাবেই আমি সুইফট ৪.২-এ কীবোর্ডটি খারিজ করি এবং এটি আমার পক্ষে কাজ করে:

    override func viewDidLoad() {
    super.viewDidLoad()

    let tap = UITapGestureRecognizer(target: self, action: 
    #selector(dismissKeyboard))

    view.addGestureRecognizer(tap)
    }

    @objc func dismissKeyboard (_ sender: UITapGestureRecognizer) {
    numberField.resignFirstResponder()
    }

-2

সুইফট 3, আইওএস 9+

@IBAction private func noteFieldDidEndOnExit(_ sender: UITextField) {}

ইউপিডি: এটি এখনও আমার পক্ষে ভাল কাজ করে। আমি মনে করি যে এই উত্তরটি উত্সর্গকারী লোকটি কেবল বুঝতে পারেনি যে তাকে স্টোরিবোর্ডে ইউআইটিেক্সটফিল্ডে এই ক্রিয়াটি আবদ্ধ করা দরকার।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.