আইফোনে রিটার্ন কী কীভাবে কীবোর্ড অদৃশ্য হয়ে যায়?


108

আমার দুটি আছে UITextFields(যেমন ইউজারনেম এবং পাসওয়ার্ড) তবে কীবোর্ডে রিটার্ন কী টিপলে আমি কীবোর্ড থেকে মুক্তি পেতে পারি না। কিভাবে আমি এটি করতে পারব?

উত্তর:


242

প্রথমে আপনাকে UITextFieldDelegateআপনার ভিউ / ভিউকন্ট্রোলারের শিরোনাম ফাইলটিতে প্রোটোকলটি মেনে চলতে হবে :

@interface YourViewController : UIViewController <UITextFieldDelegate>

তারপরে আপনার .m ফাইলে আপনাকে নিম্নলিখিত UITextFieldDelegateপ্রোটোকল পদ্ধতিটি প্রয়োগ করতে হবে :

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

    return YES;
}

[textField resignFirstResponder]; কীবোর্ড খারিজ করা হয়েছে তা নিশ্চিত করে।

আপনি .m তে পাঠ্যক্ষেত্রটি শুরু করার পরে আপনি আপনার ভিউ / ভিউ কনট্রোলারটিকে ইউআইটিেক্সটফিল্ডের প্রতিনিধি হিসাবে সেট করছেন তা নিশ্চিত করুন:

yourTextField = [[UITextField alloc] initWithFrame:yourFrame];
//....
//....
//Setting the textField's properties
//....    
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on

7
আপনি স্টোরিবোর্ডে ডেলিগেটকে টেক্সটফিল্ডে ক্লিক করে, ইউটিলিটিস প্যানেলটি দেখান, সংযোগ পরিদর্শক ক্লিক করতে পারেন, এবং ভিউ কন্ট্রোলারে ডেলিগেটের আউটলেটটি টানুন।
গুপ্ত্রন

1
আপনার পাঠ্যফিল্ডশোল্ডার্টেন পদ্ধতিটি কোথায় প্রয়োগ করা হয়েছে? আপনার সেই শ্রেণিটি ইউআইটিেক্সটফিল্ডের প্রতিনিধি হতে হবে। ডেলিগেট কলব্যাক কেবল সেই ক্লাস থেকেই চালিত হবে যা প্রতিনিধি হিসাবে সেট করা আছে এবং যদি শ্রেণি এটি প্রয়োগ করে থাকে।
সিড

1
আপনি কি মাইভিউকন্ট্রোলারটিকে এটির শিরোনামে ইউআইটিেক্সটফিল্ডডেলিগেটের সাথে মানিয়ে নিতে সেট করেছেন?
সিড

1
যতক্ষণ না মাই টেক্সটফিল্ডটি সঠিকভাবে বরাদ্দ করা হয়েছে এবং শূন্য নয়। প্রযুক্তিগতভাবে, এটি ঠিক আছে যদি এটি শূন্য হয় (কোনও ক্র্যাশ নেই) তবে তারপরে এটি কিছুই করবে না :)
সিড

1
এবং যদি আমি যুক্ত করতে পারি তবে আপনি যদি ইউআইএফ্লাটলবেলটেক্সটফিল্ডের মতো একটি ওভাররাইড হওয়া ইউআইটিেক্সটফিল্ড শ্রেণি ব্যবহার করছেন তবে তাতে কিছু আসে যায় না , আপনি এখনও আপনার টেক্সটফিল্ড.ডিলেগেট = স্ব প্রয়োজন; !!!
জেলি আন

19

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

- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
    [aTextField resignFirstResponder];
    return YES;
}


6

আপনার ইউআইটিেক্সটফিল্ডগুলির একটি প্রতিনিধি অবজেক্ট (ইউআইটিেক্সটফিল্ডডেলিগেট) থাকা উচিত। কীবোর্ড অদৃশ্য হয়ে যাওয়ার জন্য আপনার প্রতিনিধিতে নিম্নলিখিত কোডটি ব্যবহার করুন:

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

এখন পর্যন্ত কাজ করা উচিত ...


আরে সাথী, আপনি উপরে যা বলেছেন তা আমি করেছি তবে এখনও কীবোর্ডটি অদৃশ্য হয়ে যেতে পারছি না। তোমার কোন ধারনা আছে? ধন্যবাদ।
কে.হোন্ডা

আরে ক্রিস, এখন সব সাজানো হয়েছে। ধন্যবাদ।
কে.হোন্ডা

6

আমাকে বেশ কয়েকটি পরীক্ষা নিয়েছিল, একই সমস্যা ছিল, এটি আমার পক্ষে কাজ করেছে:

আপনার বানানটি এখানে পরীক্ষা করুন -

(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

আমি textFieldপরিবর্তে আমার সংশোধন textfieldকরে "এফ" কে বড় করুন ... এবং বিঙ্গো !! এটা কাজ করেছে..


4

রিটার্ন কী টিপে গেলে কল করুন:

[uitextfield resignFirstResponder];

আরে কনর, রিটার্ন কী টিপলে অ্যাপটি কীভাবে জানতে পারে? ধন্যবাদ।
কে.হোন্ডা

3

বেশ কিছুটা সময় শিকারের পরে কিছু বোঝার পরে যে বিষয়টি বোঝায়, এটি এটিই আমি একত্রিত করেছি এবং এটি একটি কবজির মতো কাজ করেছে।

//
//  ViewController.h
//  demoKeyboardScrolling
//
//  Created by Chris Cantley on 11/14/13.
//  Copyright (c) 2013 Chris Cantley. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>

// Connect your text field to this the below property.
@property (weak, nonatomic) IBOutlet UITextField *theTextField;

@end

.m

//
//  ViewController.m
//  demoKeyboardScrolling
//
//  Created by Chris Cantley on 11/14/13.
//  Copyright (c) 2013 Chris Cantley. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController



- (void)viewDidLoad
{
    [super viewDidLoad];
    // _theTextField is the name of the parameter designated in the .h file. 
    _theTextField.returnKeyType = UIReturnKeyDone;
    [_theTextField setDelegate:self];

}

// This part is more dynamic as it closes the keyboard regardless of what text field 
// is being used when pressing return.  
// You might want to control every single text field separately but that isn't 
// what this code do.
-(void)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
}


@end

আশাকরি এটা সাহায্য করবে!


3

আপনার ভিউকন্ট্রোলারটিতে ইউআইটিেক্সটফিল্ডের প্রতিনিধি সেট করুন, ফাইলের মালিক এবং ইউআইটিেক্সটফিল্ডের মধ্যে একটি রেফারেন্সিং আউটলেট যুক্ত করুন, তারপরে এই পদ্ধতিটি প্রয়োগ করুন:

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

3

প্রাক সংজ্ঞায়িত শ্রেণীর পরিবর্তে এটি যুক্ত করুন

class ViewController: UIViewController, UITextFieldDelegate {

কীবোর্ডের বাইরে ক্লিক করার সময় কীবোর্ড অপসারণ করতে

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

এন্টার টিপলে কীবোর্ড অপসারণ করতে

এই লাইনটি ভিউডিল্ডে যোগ করুন ()

ইনপুটফিল্ড ব্যবহৃত টেক্সটফিল্ডের নাম।

self.inputField.delegate = self

এবং এই ফাংশন যোগ করুন

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

2

সুইফট 2:

প্রতিটি কাজ করার জন্য এটি করা হয়!

Doneবোতামের সাহায্যে কীবোর্ডটি বন্ধ করুন বা Touch outSide, Nextপরবর্তী ইনপুটটিতে যেতে।

স্টোরিবোর্ডে Return Keyটেক্সট ফাইল করা প্রথম পরিবর্তন Next

override func viewDidLoad() {
  txtBillIdentifier.delegate = self
  txtBillIdentifier.tag = 1
  txtPayIdentifier.delegate  = self
  txtPayIdentifier.tag  = 2

  let tap = UITapGestureRecognizer(target: self, action: "onTouchGesture")
  self.view.addGestureRecognizer(tap)

}

func textFieldShouldReturn(textField: UITextField) -> Bool {
   if(textField.returnKeyType == UIReturnKeyType.Default) {
       if let next = textField.superview?.viewWithTag(textField.tag+1) as? UITextField {
           next.becomeFirstResponder()
           return false
       }
   }
   textField.resignFirstResponder()
   return false
}

func onTouchGesture(){
    self.view.endEditing(true)
}

ট্যাগ ব্যবহার করে স্পষ্টভাবে অ্যাপল দ্বারা নিরুৎসাহিত করা হয়। আপনি পরিবর্তে একটি আইবিউলেটলেট সংগ্রহ ব্যবহার করতে পারেন
আন্তজি

2

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

class MyViewController: UITextfieldDelegate{

     mytextfield.delegate = self

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

0

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

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

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


0

আপনি এই ইউআইটিেক্সটফিল্ড সাবক্লাসটি চেষ্টা করে দেখতে পারেন যা আপনি পাঠ্যের জন্য ইউআরআইটির্নকিকে পরিবর্তনশীলভাবে পরিবর্তন করতে একটি শর্ত সেট করতে পারেন:
https://github.com/codeinteractiveapps/OBReturnKeyTextField


আপনার উত্তরটি ব্যাখ্যা করুন এবং সম্পর্কিত অংশটি লিঙ্ক থেকে পোস্টে অনুলিপি করুন।
রোহিত গুপ্ত

0

সতর্কতা বাক্সের পাঠ্য ফাইলগুলিতে লেখার সময় আপনি কীবোর্ড অদৃশ্য করতে চাইলে

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