1. 程式人生 > >IOS開發之自定義鍵盤

IOS開發之自定義鍵盤

實際開發過程中,會有自定義鍵盤的需求,比如,需要新增一個表情鍵盤。本文提供一種解決方法,思路就是通過獲取系統鍵盤所在的view,然後自定義一個view覆蓋在系統鍵盤view上,接下來的事情就非常簡單了,就是在自定義的view裡做任何自己想做的事情。

這個方法的關鍵在於獲取系統鍵盤所在的view。要完成這個,需要監聽UIKeyboardDidShowNotification這個系統通知(注意:如果在UIKeyboardWillShowNotification這個系統通知裡處理是不會得到鍵盤所在view的)。程式碼如下:

[[NSNotificationCenter defaultCenter
] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

keyboardDidShow函式實現:

- (void)keyboardDidShow:(NSNotification *)notification{
    UIView *keyboardView = [self getKeyboardView];
}

關鍵函式getKeyboardView的實現,該函式返回鍵盤所在view:

- (UIView *)getKeyboardView
{ UIView *result = nil; NSArray *windowsArray = [UIApplication sharedApplication].windows; for (UIView *tmpWindow in windowsArray) { NSArray *viewArray = [tmpWindow subviews]; for (UIView *tmpView in viewArray) { if ([[NSString stringWithUTF8String:object_getClassName
(tmpView)] isEqualToString:@"UIPeripheralHostView"]) { result = tmpView; break; } } if (result != nil) { break; } } return result; }

下面的事情就簡單了,只要自定義一個view,並呼叫上面得到的keyboardView的addSubView函式,即可將自定義view覆蓋在鍵盤view之上。然後,做自己想做的事情吧。