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之上。然後,做自己想做的事情吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章