Sunday, July 31, 2011

Add Done button on Numeric keyBorad....

- (void)textFieldDidBeginEditing:(UITextField *)textField{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow)  name:UIKeyboardWillShowNotification    object:nil];
                                       
}


- (void)keyboardWillShow {

 [self performSelector:@selector(addHideKeyboardButtonToKeyboard) withObject:nil afterDelay:0];
}


- (void)addHideKeyboardButtonToKeyboard {

 // Locate non-UIWindow.

    UIWindow *keyboardWindow = nil;

    UIView *keyboard;

  for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {


        if (![[testWindow class] isEqual:[UIWindow class]]) {
            keyboardWindow = testWindow;
            break;
        }
 }



  if (!keyboardWindow) return;
   
    // Locate UIKeyboard. 
    UIView *foundKeyboard = nil;
    for (UIView *possibleKeyboard in [keyboardWindow subviews]) {
       
        // iOS 4 sticks the UIKeyboard inside a UIPeripheralHostView.
        if ([[possibleKeyboard description] hasPrefix:@"<UIPeripheralHostView"]) {
            possibleKeyboard = [[possibleKeyboard subviews] objectAtIndex:0];
        }                                                                               
       
        if ([[possibleKeyboard description] hasPrefix:@"<UIKeyboard"]) {
            foundKeyboard = possibleKeyboard;
            keyboard = possibleKeyboard;
           
            break;
        }
    }
   

if (foundKeyboard) {

        // Add the button to foundKeyboard.
  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];
       
        // keyboard view found; add the custom button to it


        [keyboard addSubview:doneButton];
    }
   
}

//Now Removing Done button along with keyBoard

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
   
 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
  

[self removeDoneButton];
   
 [textField resignFirstResponder];
   
    return YES;

}

-(void)removeDoneButton{
 
  UIWindow *keyboardWindow = nil;
    UIView *keyboard;
    for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
        if (![[testWindow class] isEqual:[UIWindow class]]) {
            keyboardWindow = testWindow;
            break;
        }
    }
    if (!keyboardWindow) return;
   
    // Locate UIKeyboard. 

    UIView *foundKeyboard = nil;


    for (UIView *possibleKeyboard in [keyboardWindow subviews]) {
            if ([[possibleKeyboard description] hasPrefix:@"<UIPeripheralHostView"]) {
           
                           possibleKeyboard = [[possibleKeyboard subviews] objectAtIndex:0];
        }                                                                               
       
        if ([[possibleKeyboard description] hasPrefix:@"<UIKeyboard"]) {
          

            foundKeyboard = possibleKeyboard;
            keyboard = possibleKeyboard;
           
            break;
        }
    }
   
    if (foundKeyboard) {
     
  // Add the button to foundKeyboard.

        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];
       
        // keyboard view found; add the custom button to it

        NSLog(@"keyboard description: %@", [keyboard description]);
     
  for (UIView *v in [keyboard subviews]) {

         if ([v isKindOfClass:NSClassFromString(@"UIButton")]) {

                [v removeFromSuperview];

               }
         }
     }
}


No comments:

Post a Comment