温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS如何实现表情键盘

发布时间:2021-07-08 18:15:35 来源:亿速云 阅读:231 作者:小新 栏目:移动开发

这篇文章将为大家详细讲解有关iOS如何实现表情键盘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

最近用到了表情键盘就去网上找了下,感觉网上的都是为了更大的需求写的,而我并不需要所以就自己写了个简单的实现。
1.用到的表情字符串是从Emojiplist文件里获取到的;

2.需要添加一个观察者:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];   - (void)keyboardWillShow:(NSNotification *)notification {   // 键盘显示\隐藏完毕的frame   CGRect frame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];   // 动画时间   CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];       // 动画   [UIView animateWithDuration:duration animations:^{     commentView.minY = -frame.size.height;   }]; }

3.创建控件:

  //声明的全局变量:   UIButton *commentView;   UIView *commentWhiteColorView;   UITextField *commentTextField;   UIButton *emojiAndKeyboardButton;   - (void)initCommentToolbarView {   commentView = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight + 230)];   commentView.hidden = YES;   [commentView addTarget:self action:@selector(commentViewAction) forControlEvents:UIControlEventTouchUpInside];   [self.view addSubview:commentView];       commentWhiteColorView = [UIView viewWithFrame:CGRectMake(0, kScreenHeight - 50, kScreenWidth, 50) backgroundColor:[UIColor whiteColor]];   commentWhiteColorView.backgroundColor = [UIColor whiteColor];   [commentView addSubview:commentWhiteColorView];       UIView *lightGrayLineView = [UIView viewWithFrame:CGRectMake(0, 0, kScreenWidth, 1) backgroundColor:RGB(240, 240, 240)];   [commentWhiteColorView addSubview:lightGrayLineView];       //文本输入框   commentTextField = [[UITextField alloc]initWithFrame:CGRectMake(10, 5, kScreenWidth - (10 + 42 + 60), 40)];   commentTextField.font = FONT(14);   commentTextField.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 10, 40)];   commentTextField.leftViewMode = UITextFieldViewModeAlways;   commentTextField.backgroundColor = RGB(234, 234, 234);   commentTextField.placeholder = @"评论";   [commentWhiteColorView addSubview:commentTextField];       //表情和键盘切换按钮   emojiAndKeyboardButton = [UIButton buttonWithType:UIButtonTypeCustom];   emojiAndKeyboardButton.frame = CGRectMake(commentTextField.maxX + 7, 0, 35, 50);   [emojiAndKeyboardButton setImage:[UIImage imageNamed:@"icon_emoji_input"] forState:UIControlStateNormal];   [emojiAndKeyboardButton setImage:[UIImage imageNamed:@"icon_keyboard_input"] forState:UIControlStateSelected];   [emojiAndKeyboardButton addTarget:self action:@selector(emojiAndKeyboardButtonAction:) forControlEvents:UIControlEventTouchUpInside];   [commentWhiteColorView addSubview:emojiAndKeyboardButton];       //发送按钮   UIButton *sendButton = [UIButton buttonWithFrame:CGRectMake(emojiAndKeyboardButton.maxX, commentTextField.minY, 50, 40) type:UIButtonTypeCustom title:@"发送" titleColor:RGB(135, 135, 135) imageName:nil action:@selector(sendButtonAction) target:self];   sendButton.titleLabel.font = FONT(14);   [sendButton setBorder:1 color:RGB(135, 135, 135)];   [sendButton setCornerRadius:3];   [commentWhiteColorView addSubview:sendButton];       //表情滚动视图   emojiScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, commentWhiteColorView.maxY, kScreenWidth, 200)];   emojiScrollView.backgroundColor = RGB(244, 244, 246);   emojiScrollView.delegate = self;   emojiScrollView.pagingEnabled = YES;   [commentView addSubview:emojiScrollView];       //从文件里获取到的表情字符串数组   emojiArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Emoji" ofType:@"plist"]];       CGFloat emojiButtonWidth = kScreenWidth/8;       int i = 0;   //页数向上取整   int page = ceilf(emojiArray.count/32.0);       //UIKit里的页面控制器   pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, emojiScrollView.maxY, kScreenWidth, 30)];   pageControl.numberOfPages = page;   pageControl.backgroundColor = RGB(244, 244, 246);   pageControl.pageIndicatorTintColor = RGB(206, 206, 206);   pageControl.currentPageIndicatorTintColor = RGB(121, 121, 121);   [commentView addSubview:pageControl];       //设置表情滚动视图的contentSize   emojiScrollView.contentSize = CGSizeMake(kScreenWidth * page, 200);   //循环创建表情按钮   for (int currentPage = 0; currentPage < page; currentPage++) {     for (int row = 0; row < 4; row++) {       for (int column = 0; column < 8; column++) {         UIButton *emojiButton = [UIButton buttonWithType:UIButtonTypeCustom];         if (row == 3 && column == 7) {           //如果是第4行第8列就设置删除表情的图片替代字符串,并调用另一个方法           [emojiButton setImage:[UIImage imageNamed:@"back_icon_input"] forState:UIControlStateNormal];           [emojiButton addTarget:self action:@selector(deleteEmojiAction) forControlEvents:UIControlEventTouchUpInside];         }else{           [emojiButton setTitle:emojiArray[i++] forState:UIControlStateNormal];           [emojiButton addTarget:self action:@selector(emojiButtonAction:) forControlEvents:UIControlEventTouchUpInside];         }         emojiButton.frame = CGRectMake(emojiButtonWidth * column + currentPage * kScreenWidth, 50 * row, emojiButtonWidth, 50);         [emojiScrollView addSubview:emojiButton];                   //当i等于数组计数时就打断循环         if (i == emojiArray.count) {           break;         }       }     }   }       //手动添加最后一个删除表情按钮   UIButton *emojiButton = [UIButton buttonWithType:UIButtonTypeCustom];   [emojiButton setImage:[UIImage imageNamed:@"back_icon_input"] forState:UIControlStateNormal];   emojiButton.frame = CGRectMake(emojiButtonWidth * 7 + 5 * kScreenWidth, 50 * 3, emojiButtonWidth, 50);   [emojiButton addTarget:self action:@selector(deleteEmojiAction) forControlEvents:UIControlEventTouchUpInside];   [emojiScrollView addSubview:emojiButton]; }   //表情按钮事件 - (void)emojiButtonAction:(UIButton *)sender { //  NSLog(@"%@",sender.currentTitle);   NSMutableString *oldText = [NSMutableString stringWithString:commentTextField.text];   [oldText appendString:sender.currentTitle];   commentTextField.text = oldText; }   //删除表情按钮事件 - (void)deleteEmojiAction {   if (commentTextField.text.length > 1) {     //判断是否是表情,表情length为2,所以减去2     if ([emojiArray containsObject:[commentTextField.text substringWithRange:NSMakeRange(commentTextField.text.length - 2, 2)]]) {       commentTextField.text = [commentTextField.text substringToIndex:commentTextField.text.length - 2];     }else{       commentTextField.text = [commentTextField.text substringToIndex:commentTextField.text.length - 1];     }   }else{     commentTextField.text = @"";   } }   //在代理方法中调整pageControl - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {   if (scrollView == emojiScrollView) {     pageControl.currentPage = scrollView.contentOffset.x/scrollView.width;   } }   //表情和键盘切换按钮事件 - (void)emojiAndKeyboardButtonAction:(UIButton *)sender {   sender.selected = !sender.selected;       if (sender.selected == YES) {     [commentTextField resignFirstResponder];           [UIView animateWithDuration:0.5 animations:^{       commentView.minY = -230;     }];   }else{     [commentTextField becomeFirstResponder];   } }   - (void)commentViewAction {   [commentTextField resignFirstResponder];       commentView.hidden = YES;   commentView.minY = 0;   commentTextField.text = @"";   emojiAndKeyboardButton.selected = NO; }

关于“iOS如何实现表情键盘”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios
AI