- - (void)addDoneButtonToNumPadKeyboard
- {
- UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
- if (systemVersion < 8.0){
- doneButton.frame = CGRectMake(0, 163, 106, 53);
- }else{
- doneButton.frame = CGRectMake(0, SCREEN_SIZE.height-53, 106, 53);
- }
- doneButton.tag = NUM_PAD_DONE_BUTTON_TAG;
- doneButton.adjustsImageWhenHighlighted = NO;
- [doneButton setTitle:@"完成" forState:UIControlStateNormal];
- [doneButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
- [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];
- NSArray *windowArr = [[UIApplication sharedApplication] windows];
- if (windowArr != nil && windowArr.count > 1){
- UIWindow *needWindow = [windowArr objectAtIndex:1];
- UIView *keyboard;
- for(int i = 0; i < [needWindow.subviews count]; i++) {
- keyboard = [needWindow.subviews objectAtIndex:i];
- NSLog(@"%@", [keyboard description]);
- if(([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES) || ([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) || ([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES)){
- UIView *doneButtonView = [keyboard viewWithTag:NUM_PAD_DONE_BUTTON_TAG];
- if (doneButtonView == nil){
- [keyboard addSubview:doneButton];
- }
- }
- }
- }
- }
- -(void)removeDoneButtonFromNumPadKeyboard
- {
- UIView *doneButton = nil;
- NSArray *windowArr = [[UIApplication sharedApplication] windows];
- if (windowArr != nil && windowArr.count > 1){
- UIWindow *needWindow = [windowArr objectAtIndex:1];
- UIView *keyboard;
- for(int i = 0; i < [needWindow.subviews count]; i++) {
- keyboard = [needWindow.subviews objectAtIndex:i];
- if(([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES) || ([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) || ([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES)){
- doneButton = [keyboard viewWithTag:NUM_PAD_DONE_BUTTON_TAG];
- if (doneButton != nil){
- [doneButton removeFromSuperview];
- }
- }
- }
- }
- }
-
-
-
-
-
注:
1.iOS8之后,键盘view的description变为以<UIInputSetContainerView开头,所以需要在判断的逻辑中加上这一项。
2.iOS8之后,键盘view的大小变成了整个屏幕的大小,所以需要对按钮添加的位置进行适配。