IOS開發之自定義鍵盤
阿新 • • 發佈:2019-02-19
實際開發過程中,會有自定義鍵盤的需求,比如,需要新增一個表情鍵盤。本文提供一種解決方法,思路就是通過獲取系統鍵盤所在的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之上。然後,做自己想做的事情吧。