iOS 防键盘遮挡的实例

2025-05-29 0 65

当我们在UITextField输入数据时经常弹出键盘遮挡界面,解决方法是:在弹出键盘时将整个UIVIew向上移动,在键盘消失时,UIVIew还原。

实例代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66
@interface ViewController ()<UITextFieldDelegate>

@property(nonatomic,strong)UITextField* tf;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.tf = [[UITextField alloc]initWithFrame:CGRectMake(10, 600, 100, 20)];

self.tf.delegate = self;

self.tf.backgroundColor = [UIColor blackColor];

[self.view addSubview:self.tf];

}

#pragma mark life Circle

-(void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

//后台切换到前台通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground)name:UIApplicationWillEnterForegroundNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(keyboardWillHide:)

name:UIKeyboardWillHideNotification

object:nil];

[self.view endEditing:YES];

}

- (void)applicationWillEnterForeground{

[self.view endEditing:YES];

}

-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

[self.view endEditing:YES];

}

#pragma mark UITextFieldDelegate

-(void)textFieldDidBeginEditing:(UITextField *)textField{

//第一个cell不往上弹输入框的位置

// if(indexPath.row!=0){

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];

// }

}

-(void)textFieldDidEndEditing:(UITextField *)textField{

}

#pragma mark 键盘操作

- (void)keyboardWillChange:(NSNotification *)note

{

NSDictionary *userInfo = note.userInfo;

CGFloat duration = [userInfo[@"UIKeyboardAnimationDurationUserInfoKey"] doubleValue];

CGRect keyFrame = [userInfo[@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];

//这个64是我减去的navigationbar加上状态栏20的高度,可以看自己的实际情况决定是否减去;

CGFloat moveY = keyFrame.origin.y -self.tf.frame.origin.y-self.tf.frame.size.height;

NSLog(@"%f",moveY);

[UIView animateWithDuration:duration animations:^{

self.view.transform = CGAffineTransformMakeTranslation(0, moveY);

}];

}

- (void)keyboardWillHide:(NSNotification *)nsnotification

{

[[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];

[UIView animateWithDuration:0.2 animations:^{

self.view.transform = CGAffineTransformMakeTranslation(0, 0);

}];

}

@end

以上这篇iOS键盘遮挡的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS 防键盘遮挡的实例 https://www.kuaiidc.com/90306.html

相关文章

发表评论
暂无评论