Search code examples
objective-cios6

adding custom button to number pad keyboard ios 6


I am new in IOS & I am using IOS 6. I have more than one textfield in my code, one of them uses the Number pad keyboard and I want to add the custom button to it.

I am using this code:

 UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    doneButton.frame = CGRectMake(0, 163, 106, 53);
    doneButton.adjustsImageWhenHighlighted = NO;
    [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
    [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
    [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

    // locate keyboard view
    UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView* keyboard;
    for(int i=0; i<[tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
        // keyboard view found; add the custom button to it
        if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == TRUE)
            [keyboard addSubview:doneButton];
      }

Selector is called, but the problem is that the [[tempwindow.subviews]count] is 0.

Could anyone help me ?

Thanks in advance.


Solution

  • I have used following code. Check it.

    - (void)textFieldDidBeginEditing:(UITextField *)textField {
        if(textField==txt1)
        {
    
            [[NSNotificationCenter defaultCenter] addObserver: self
                                                     selector: @selector(keyboardDidShowOrHide:)
                                                         name: UIKeyboardDidShowNotification object:nil];
    
        }
        else
        {
    
            [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
        }
    
    
    
    }
    - (void) keyboardDidShowOrHide : (id) sender {
        // create custom button
        UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
        doneButton.frame = CGRectMake(0, 427, 106, 53);
        doneButton.adjustsImageWhenHighlighted = NO;
        [doneButton setBackgroundImage:[UIImage imageNamed:@"doneup.png"] forState:UIControlStateNormal];
        [doneButton setBackgroundImage:[UIImage imageNamed:@"donedown.png"] forState:UIControlStateHighlighted];
        [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];
        UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
        [tempWindow addSubview:doneButton];
    
    
    }
    -(void)doneButton:(id)sender
    {
        UIButton *btntmp=sender;
        [btntmp removeFromSuperview];
        [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
        //[self setViewMovedUp:NO];
        [txt1 resignFirstResponder];
    }