最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS表情鍵盤的簡(jiǎn)單實(shí)現(xiàn)代碼

 更新時(shí)間:2017年03月25日 15:12:01   作者:Kerwin  
這篇文章主要為大家詳細(xì)介紹了iOS表情鍵盤的簡(jiǎn)單實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近用到了表情鍵盤就去網(wǎng)上找了下,感覺網(wǎng)上的都是為了更大的需求寫的,而我并不需要所以就自己寫了個(gè)簡(jiǎn)單的實(shí)現(xiàn)。
1.用到的表情字符串是從Emojiplist文件里獲取到的;

2.需要添加一個(gè)觀察者:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
 
- (void)keyboardWillShow:(NSNotification *)notification
{
  // 鍵盤顯示\隱藏完畢的frame
  CGRect frame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
  // 動(dòng)畫時(shí)間
  CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
   
  // 動(dòng)畫
  [UIView animateWithDuration:duration animations:^{
    commentView.minY = -frame.size.height;
  }];
}

3.創(chuàng)建控件:

  //聲明的全局變量:
  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 = @"評(píng)論";
  [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];
   
  //發(fā)送按鈕
  UIButton *sendButton = [UIButton buttonWithFrame:CGRectMake(emojiAndKeyboardButton.maxX, commentTextField.minY, 50, 40) type:UIButtonTypeCustom title:@"發(fā)送" 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];
   
  //表情滾動(dòng)視圖
  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];
   
  //從文件里獲取到的表情字符串?dāng)?shù)組
  emojiArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Emoji" ofType:@"plist"]];
   
  CGFloat emojiButtonWidth = kScreenWidth/8;
   
  int i = 0;
  //頁數(shù)向上取整
  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];
   
  //設(shè)置表情滾動(dòng)視圖的contentSize
  emojiScrollView.contentSize = CGSizeMake(kScreenWidth * page, 200);
  //循環(huán)創(chuàng)建表情按鈕
  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列就設(shè)置刪除表情的圖片替代字符串,并調(diào)用另一個(gè)方法
          [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];
         
        //當(dāng)i等于數(shù)組計(jì)數(shù)時(shí)就打斷循環(huán)
        if (i == emojiArray.count) {
          break;
        }
      }
    }
  }
   
  //手動(dòng)添加最后一個(gè)刪除表情按鈕
  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 = @"";
  }
}
 
//在代理方法中調(diào)整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;
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決Xcode8打包上傳構(gòu)建版本無效的辦法

    解決Xcode8打包上傳構(gòu)建版本無效的辦法

    這篇文章主要介紹的是自己在打包上傳項(xiàng)目的時(shí)候遇到的一個(gè)問題,通過自己的努力一步步解決了,現(xiàn)將解決方法方法分享給大家,希望給同樣遇到這個(gè)問題的朋友們能有所幫助,下面來一起看看吧。
    2016-09-09
  • 將多個(gè)字符串高亮顯示之TTTAttributedLabel

    將多個(gè)字符串高亮顯示之TTTAttributedLabel

    本文介紹了將多個(gè)字符串高亮顯示之TTTAttributedLabel。在此需要對(duì)每個(gè)字符串進(jìn)行匹配,可以研究下kmp和bm算法,在這里應(yīng)用了oc自帶的NSRegularExpression 來進(jìn)行正則表達(dá)式匹配,算是比較簡(jiǎn)單的方法,需要的朋友可以參考下
    2015-07-07
  • unix 編程進(jìn)程控制詳細(xì)介紹

    unix 編程進(jìn)程控制詳細(xì)介紹

    這篇文章主要介紹了unix 編程進(jìn)程控制詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • IOS開發(fā)OC代碼中創(chuàng)建Swift編寫的視圖控制器

    IOS開發(fā)OC代碼中創(chuàng)建Swift編寫的視圖控制器

    這篇文章主要介紹了IOS開發(fā)OC代碼中創(chuàng)建Swift編寫的視圖控制器的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • iOS如何定義名為任意的變量詳解

    iOS如何定義名為任意的變量詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何定義名為任意的變量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-05-05
  • 詳解IOS中如何實(shí)現(xiàn)瀑布流效果

    詳解IOS中如何實(shí)現(xiàn)瀑布流效果

    說到瀑布流, 或許大家都不陌生, 瀑布流的實(shí)現(xiàn)也有很多種! 從scrollView 到 tableView 書寫的瀑布流, 然后再到2012年iOS6 蘋果API新加進(jìn)的collectionView進(jìn)行的瀑布流封裝! 確實(shí),不論是寫起來還是用起來都要方便很多!那么下面一起來看看IOS中具體如何實(shí)現(xiàn)瀑布流效果。
    2016-08-08
  • ios wkwebview離線化加載h5資源解決方案

    ios wkwebview離線化加載h5資源解決方案

    本篇文章主要介紹了ios wkwebview離線化加載h5資源解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 如何在IOS上使用ReplayKit與RTC

    如何在IOS上使用ReplayKit與RTC

    這篇文章主要介紹了如何在IOS上使用ReplayKit 與 RTC,對(duì)IOS音視頻感興趣的同學(xué),一定要看一下
    2021-04-04
  • 提高iOS開發(fā)效率的小技巧與思路

    提高iOS開發(fā)效率的小技巧與思路

    很多人就會(huì)問學(xué)習(xí)iOS難不難啊?需要掌握哪些技能呢?有哪些技巧和方法呢?下面本文詳細(xì)給大家闡述開發(fā)技巧與思路。
    2016-07-07
  • iOS開發(fā)技巧之自定義相機(jī)

    iOS開發(fā)技巧之自定義相機(jī)

    這篇文章主要為大家詳細(xì)介紹了iOS開發(fā)技巧之自定義相機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04

最新評(píng)論

高台县| 沭阳县| 海门市| 西华县| 平果县| 秦皇岛市| 平乐县| 论坛| 耿马| 阿巴嘎旗| 桐乡市| 太康县| 淮阳县| 平度市| 新邵县| 罗山县| 海林市| 明水县| 河北省| 西乌珠穆沁旗| 霍林郭勒市| 柘荣县| 竹溪县| 南京市| 崇礼县| 文山县| 江津市| 丹阳市| 淳化县| 洱源县| 延边| 绥宁县| 法库县| 班玛县| 澄城县| 绥棱县| 云南省| 寿光市| 长白| 乐平市| 成都市|