iOS自定义数字键盘

编程入门 行业动态 更新时间:2024-10-19 02:21:41

iOS<a href=https://www.elefans.com/category/jswz/34/1771438.html style=自定义数字键盘"/>

iOS自定义数字键盘

本文来自 海之飞燕 /?p=662

因为的UIKeyboardTypeNumberPad类型的键盘没有完成按钮,为了自己加这个按钮,网上有N种方法,大体的思路就是:在获得键盘弹出通知时,在键盘的那个UIView上添加一个自定义的UIButton,但是这些方法都存在问题:

1.使用UIKeyboardWillShowNotification时,我在iphone4.3及5.0模拟器上发现keyboard视图还没有创建出来

2.ios5上,要根据不同的uiview description来找到keyboard,版本不同descruption不同

3.ios5上,添加UIButton的位置不同(x,y坐标都为负数才能显示按钮),并且按钮加上后不能被点击

 

 

 

#define KEY_WIDTH 106

#define KEY_HEIGHT 53

 

 

#pragma mark - 处理TextField响应事件

- (void)editingDidBegin:(UITextField *)textF {

    [self.textFbecomeFirstResponder];

}

 

//3.实现通知处理

- (void)handleKeyboardWillHide:(NSNotification *)notification

{

    if (doneInKeyboardButton.superview)

    {

        [doneInKeyboardButtonremoveFromSuperview];

    }

    

}

 

- (void)handleKeyboardDidShow:(NSNotification *)notification

{

    NSDictionary *info = [notificationuserInfo];

    CGSize kbSize = [[infoobjectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;

    CGFloat normalKeyboardHeight = kbSize.height;

    int cnt = [[UIApplicationsharedApplication] windows].count;

    UIWindow* tempWindow = [[[UIApplicationsharedApplication] windows] objectAtIndex:cnt-1];

    // create custom button

    if (doneInKeyboardButton ==nil)

    {

        doneInKeyboardButton = [UIButtonbuttonWithType:UIButtonTypeCustom];

        

        doneInKeyboardButton.frame =CGRectMake(18, tempWindow.frame.size.height-53,106, 53);

        

        doneInKeyboardButton.adjustsImageWhenHighlighted =NO;

        [doneInKeyboardButtonsetImage:[UIImageimageNamed:@"done.png"]forState:UIControlStateNormal];

        [doneInKeyboardButtonsetImage:[UIImageimageNamed:@"done.png"]forState:UIControlStateHighlighted];

        [doneInKeyboardButtonaddTarget:selfaction:@selector(finishAction)forControlEvents:UIControlEventTouchUpInside];

    }

    

    

    // locate keyboard view

    

    

    if (doneInKeyboardButton.superview == nil)

    {

        // 注意这里直接加到window上

        [tempWindow addSubview:doneInKeyboardButton];

    }

    

}  

 

#pragma mark - 处理视图响应事件

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    [self.textFresignFirstResponder];

}

 

-(void)viewWillAppear:(BOOL)animated

{

    [superviewWillAppear:animated];

    //1. 先注册通知

    [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(handleKeyboardDidShow:)name:UIKeyboardDidShowNotificationobject:nil];

    

    [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(handleKeyboardWillHide:)name:UIKeyboardWillHideNotificationobject:nil];

}

//2. 在dealloc中反注册通知

-(void)dealloc

{

    [[NSNotificationCenterdefaultCenter] removeObserver:self];

}

原文:/?p=662

更多推荐

iOS自定义数字键盘

本文发布于:2024-03-12 23:13:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732639.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   数字键盘   iOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!