ios 键盘添加个隐藏键盘功能

键盘添加个隐藏键盘功能

使用方法:导入XMCustomKeyBoard.h

[XMCustomKeyBoard CancelableKeyboard:控件对象 ];

控件对象可以是UITextFiled,UITextView,UISearchBar 等一系列调用键盘输入的类的实例
1.自定义个UIBarButtonItem,添加属性editableView,editableView存储需要添加隐藏键盘功能的那个控件
#import <UIKit/UIKit.h>


@interface XMCustomKeyBoardBtn : UIBarButtonItem

@property (strong, nonatomic) id editableView;

@end


#import "XMCustomKeyBoardBtn.h"

@implementation XMCustomKeyBoardBtn



@end

2.自定义个UIView,因为只有UIView的子类才可以添加进keyWindow,想动态绑定这个类定义的方法,就必须让这个类保持活跃.
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "XMCustomKeyBoardBtn.h"


@interface XMCustomKeyBoard : UIView

+ (void) CancelableKeyboard:(id) editableView;

+ (void) CancelableKeyboard:(id) editableView CustomButtonItem:(UIBarButtonItem *)btn;

@end



3.通过传进来的控件为其在键盘工具栏添加一个隐藏键盘的按钮并动态绑定一个隐藏键盘的方法

#import "XMCustomKeyBoard.h"

@implementation XMCustomKeyBoard

+ (void) CancelableKeyboard:(id) editableView{
    XMCustomKeyBoard *custom = [[XMCustomKeyBoard alloc] initWithFrame:CGRectMake(0,-999,10,10)];
    [[UIApplication sharedApplication].keyWindow addSubview:custom];
    [editableView setInputAccessoryView:[self CancelableKeyboardToolBar:editableView addTarget:custom]];
}

+ (void) CancelableKeyboard:(id) editableView CustomButtonItem:(UIBarButtonItem *)btn {
    XMCustomKeyBoard *custom = [[XMCustomKeyBoard alloc] initWithFrame:CGRectMake(0,-10,10,10)];
    [[UIApplication sharedApplication].keyWindow addSubview:custom];
    [editableView setInputAccessoryView:[self CancelableKeyboardToolBar:editableView CustomButtonItem:btn addTarget:custom]];
}

+ (UIToolbar *)CancelableKeyboardToolBar:(id) editableView CustomButtonItem:(UIBarButtonItem *)btn addTarget:(id) target
{
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([UIApplication sharedApplication].keyWindow.frame), 40)];
    toolbar.backgroundColor = [UIColor lightGrayColor];
    
    UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:editableView action:@selector(onClick)];
    [button setWidth:[UIApplication sharedApplication].keyWindow.frame.size.width - btn.width];

    XMCustomKeyBoardBtn *button1 = (XMCustomKeyBoardBtn *)btn;
    
    button1.target = target;
    
    button1.action = @selector(CancelableKeyboard:);
    
    button1.editableView = editableView;
                 
    [toolbar setItems:@[button,button1]];
    return toolbar;
}

+ (UIToolbar *)CancelableKeyboardToolBar:(id) editableView addTarget:(id) target
{
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([UIApplication sharedApplication].keyWindow.frame), 40)];
    toolbar.backgroundColor = [UIColor lightGrayColor];
    
    UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:editableView action:@selector(onClick)];
    [button setWidth:[UIApplication sharedApplication].keyWindow.frame.size.width - 50];

    XMCustomKeyBoardBtn *button1 = [[XMCustomKeyBoardBtn alloc] initWithTitle:@"隐藏键盘" style:UIBarButtonItemStyleBordered target:target action:@selector(CancelableKeyboard:)];
    
    button1.editableView = editableView;
                 
    [button1 setWidth:50];
    [toolbar setItems:@[button,button1]];
    return toolbar;
}
-(void)CancelableKeyboard:(XMCustomKeyBoardBtn *) btn{
    [btn.editableView resignFirstResponder];
}
-(void) onClick{
    
}

@end




发布了7 篇原创文章 · 获赞 4 · 访问量 298

猜你喜欢

转载自blog.csdn.net/qq_41586150/article/details/103932369