iPhone开发监听键盘状态、输入法状态

实现的功能:1)演示监听键盘状态(可解决键盘挡住输入法等问题)2)监听输入法状态

关键词:键盘状态 输入法状态 监听





1、新建一SingleView Application,命名为:KeyBoard&InputMethod,工程结果如下:
[img]

[/img]




2、修改ViewController.xib如下:
[img]

[/img]



3、ViewController.h不作修改,ViewController.m修改后如下:
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    //监听键盘状态
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
    //监听输入法状态
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeInputMode:) name:UITextInputCurrentInputModeDidChangeNotification object:nil];
}

#pragma mark Notification
//keyBoard已经展示出来
- (void)keyboardDidShow:(NSNotification *)notification
{
    NSValue* aValue = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
    CGRect keyboardFrame = [self.view convertRect:keyboardRect fromView:[[UIApplication sharedApplication] keyWindow]];
    CGFloat keyboardHeight = keyboardFrame.size.height;
    NSLog(@"##keboardHeight=%.2f",keyboardHeight);
}

//输入法发生切换
-(void)changeInputMode:(NSNotification *)notification{
    NSString *inputMethod = [[UITextInputMode currentInputMode] primaryLanguage];
    NSLog(@"inputMethod=%@",inputMethod);
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

猜你喜欢

转载自android-zhang.iteye.com/blog/1758675