首先在AppDelegate代理中添加一个通知方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardDidShowNotification object:nil];
-(void)keyboardShow:(NSNotification *)notificaton
{
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//或者
[[[UIApplication sharedApplication] windows] lastObject];
for(int i=0; i<[tempWindow.subviews count]; i++)
{
UIView * keyboard = [tempWindow.subviews objectAtIndex:i];
NSString * string=[NSString stringWithFormat:@"%@",[keyboard class]];
if ([string isEqual:@"UIPeripheralHostView"])//UIPeripheralHostView
{//UIKeyboardCornerView
UIButton * btn=[UIButton buttonWithType:1];
[btn setFrame:CGRectMake(220, -30,100 , 30)];
[keyboard addSubview:btn];
[btn addTarget:self action:@selector(resing:) forControlEvents:UIControlEventTouchUpInside];
}
}
}
按钮调用的方法实现:
-(void)resing:(id)sender
{
UIWindow* window = [UIApplication sharedApplication].keyWindow;
UIView *firstResponder = [window performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
}
这样不管在任何地方,只要键盘出来上面就会有一个按钮,点击该按钮就会取消键盘。