Hamza Imran
Hamza Imran

Reputation: 189

Keyboard Down in IOS

I have some textfield in which when i click it shows me keyboard , but when i click anywhere on the page the keyboard do not disappears . This is my code for resign of first responder. Whats wrong in my code.

enter image description here

Upvotes: 0

Views: 88

Answers (6)

Lal Krishna
Lal Krishna

Reputation: 16160

Create iVar for UIGestureRecognizer

UIGestureRecognizer *tapper;

- (void)viewDidLoad
{
    [super viewDidLoad];
    tapper = [[UITapGestureRecognizer alloc]
                initWithTarget:self action:@selector(handleSingleTap:)];
    tapper.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:tapper];
}

Dismiss what ever is currently editing:

- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
    [self.view endEditing:YES];
}

Upvotes: 1

Subramanian P
Subramanian P

Reputation: 4375

Create one UITapGestureRecognizer as a class variable.

@interface ViewController() {
    UITapGestureRecognizer  *tapGesture;
}    

- (void)viewDidLoad  {
   [super viewDidLoad]
   tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissKeyboard)];
}

Add gesture on textfield delegates textFieldDidBeginEditing, And remove it on textFieldDidEndEditing.

- (void)textFieldDidBeginEditing:(UITextField *)textField {
   [self.view addGestureRecognizer:_tapGesture];
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    [self.view removeGestureRecognizer:_tapGesture];
}

Implement tap gesture selection

- (void)dismissKeyboard {
    [self.view endEditing:YES];
}

Upvotes: 0

Dhiru
Dhiru

Reputation: 3060

Add Tap Gesture on your Top View you you havn't any subview which may hide your Root view than only use self.view if you are using ScrollView than add TapGesture on your ScrollView

 -(void)viewDidLoad
    {
        [super viewDidLoad];

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDissmiss:)];
         [self.view addGestureRecognizer: tap];
    }

Handle Tap Gesture

  -(void)tapDissmiss:(UITapGestureRecognizer *)tapGestureRecognizer
    {
       [self.view endEditing:YES];
    }

Upvotes: 0

Siva Sankar
Siva Sankar

Reputation: 543

 - (void)viewDidLoad {
  UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
    [self.view addGestureRecognizer:tap]; 
 }
 -(void)dismissKeyboard {
    [yourtextfield resignFirstResponder];
    }

Upvotes: 0

Vikash Kumar
Vikash Kumar

Reputation: 636

Try this code:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch * touch = [touches anyObject];
        if(touch.phase == UITouchPhaseBegan) {
            [aTextField resignFirstResponder];
        }
    }

Or

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch * touch = [touches anyObject];
        if(touch.phase == UITouchPhaseBegan) {
          [self.view endEditing:YES];
        }
    }

Upvotes: 0

iAnurag
iAnurag

Reputation: 9356

Add this code:

-(void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapReceived:)];
    [tapGestureRecognizer setDelegate:self];
    [self.view addGestureRecognizer:tapGestureRecognizer];
}

-(void)tapReceived:(UITapGestureRecognizer *)tapGestureRecognizer
{
    [textField resignFirstResponder];
}

Upvotes: 2

Related Questions