您的位置:首页 > 移动开发 > Objective-C

iphone 自定义软键盘的一种笨拙方法

2011-10-18 10:42 337 查看
思路:

1.用静态方法找到应用程序当前view(window)中的UIKeyboard的view

2.在键盘的view上帖上自己的view,(精彩了,这个自己的view就是你自己键盘,任意发挥,什么类型键盘都可以做了)

3.根据需要调整系统键盘的大小以满足你想要的尺寸

4.给自己的键盘view上的button添加方法,实现功能

主要代码:

添加自身类为键盘事件的观察者

复制代码

[[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(keyboardWillShow:)

                                                 name:UIKeyboardWillShowNotification

                                               object:nil];

核心思路代码:
复制代码

- (void)keyboardWillShow:(NSNotification *)note

{  

    UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//获取键盘所在window

    for(int i=0; i<[tempWindow.subviews count]; i++)

    {

        keyboard = [tempWindow.subviews objectAtIndex:i];

        if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)

        {

            [keyboard setFrame:CGRectMake(0, 460, 320, 345)];

            [self congfigKeypad];

            

            [keyboard addSubview:keyPadView1];

            

        }

    }

}

比如配置方法可以是这样:
复制代码

-(void)congfigKeypad

{

   SearBtn *one = [[SearBtn alloc] initWithFrame:CGRectMake(81, 3, kNumPadW, kNumPadH) index:1 ContextString:@"1" type:kNumPadType];

    [one setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];

    [one addTarget:self action:@selector(buttonClickAtIndex:) forControlEvents:UIControlEventTouchUpInside];

        //......略

}

添加NSMutableString作为文本域字串的容器,点击button后append的button对应的字串。
复制代码

- (void)buttonClickAtIndex:(id)sender

{

    SearBtn *btnItem = (SearBtn*)sender;

    NSString *str = btnItem->btnText;

    [s_text appendString:str];

    [sBar setText:s_text];

}

;

再实现一个deleteChar的方法作为退格键

思路:
复制代码

if ([s_text length] > 0)

    {

        NSRange rang;

        rang.location = [s_text length] - 1;

        rang.length = 1;

        [s_text deleteCharactersInRange:rang];

    }

现在点击各种文本域,应该就可以现实自己的键盘了。
源代码:KeyBoardDesignDemo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐