IOS开发之---键盘覆盖控件textfield

本文介绍了一种在iOS应用中解决键盘弹出遮挡输入框的方法,通过监听键盘显示和隐藏通知,调整输入框位置确保其始终可见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在开发过程中经常会遇到一个问题是,当我们选择输入框时会有键盘跳出覆盖了我们的输入框,这个时候我们需要解决的问题就是:将我们的输入框上移,使它先是在键盘上方:

前提:

在您的h文件中声明一个textfield

@property (retain, nonatomic) IBOutlet UITextField *textView;



首先在viewDIdLoad方法中如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardwasShown:) name:UIKeyboardDidShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardwasHidden:) name:UIKeyboardDidHideNotification object:nil];
}


这个方法里我们调用了两个方法,一个是键盘显示时的侦听事件的处理,另一个是键盘消失时的侦听事件的处理。


(1)键盘显示时的侦听事件的处理

-(void)keyboardwasShown:(NSNotification *) notify{
    CGRect frame = [self.view frame];
    if ([[notify name]isEqualToString:UIKeyboardDidShowNotification]) {
        [UIView animateWithDuration:0.3 animations:^{
            self.view.frame = frame;
        }completion:^(BOOL finished) {
            //
        }];
    }
    
    NSDictionary *info = [notify userInfo];
    NSValue *aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
    
    CGSize keyBoardSize = [aValue CGRectValue].size;

    CGRect rect = self.textView.frame;
    rect.origin.y = self.view.frame.size.height - keyBoardSize.height - rect.size.height;
    self.textView.frame = rect;
    
}

(2)键盘消失时的侦听事件的处理

-(void) keyboardwasHidden:(NSNotification *) notify{
    NSDictionary *info = [notify userInfo];
    NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    
    CGSize keyBoardSize = [aValue CGRectValue].size;
    
    
    CGRect rect = self.textView.frame;
    rect.origin.y = self.view.frame.size.height - rect.size.height;
    self.textView.frame = rect;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值