1. 程式人生 > >iOS UITextView 輸入內容實時更新cell的高度

iOS UITextView 輸入內容實時更新cell的高度

http://www.cocoachina.com/ios/20141226/10778.html

這篇文章介紹了在一個動態資料的 table view 中,cell 根據 text view 內容的輸入實時改變 cell 和 table view 的高度。自動計算 cell 高度的功能使用 iOS 8 才支援的自適應 cell,如果你還不知道 iOS 8 自適應 cell,可以參看這篇文章:iOS 8 自適應 Cell

先上圖,我們最終要實現的效果是這樣的:

63.gif

圖 1:實時更新 cell 高度

實現上面效果的基本原理是:

  1. 在 cell 中設定好 text view 的 autolayout,讓 cell 可以根據內容自適應大小

  2. text view 中輸入內容,根據內容更新 textView 的高度

  3. 呼叫 tableView 的 beginUpdates 和 endUpdates,重新計算 cell 的高度

  4. 將 text view 更新後的資料儲存,以免 table view 滾動超過一屏再滾回來 text view 中的資料又不重新整理成原來的資料了。

功能具體實現方法

新建一個專案,拉出 TableViewController,在 cell 上新增一個 UITextView。

首先設定 text view 的 autolayout,比較關鍵的 constraint 是要設定 textView 的高度大於等於一個值。如圖:

302.jpg

圖 2: Text view 的 autolayout 設定

然後,設定 UITextView 的 scrollEnable 為 NO。這一點很關鍵,如果不設定為 NO,UITextView 在內容超出 frame 後,重新設定 text view 的高度會失效,並出現滾動條。

302.jpg

圖 3:去掉 scrolling enable 勾選

根據剛才在 storyboard 中建立的 cell,新建一個 UITableViewCell 類。

1 2 3 4 #import <uikit uikit.h="">
@interface TextViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UITextView *textView; @end</uikit>

建立 TableViewController 並初始化一些資料

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #import "TableViewController.h" #import "TextViewCell.h" @interface TableViewController () @property (nonatomic, strong) NSArray *data; @end @implementation TableViewController - (void)viewDidLoad { [super viewDidLoad]; //  支援自適應 cell self.tableView.estimatedRowHeight = 100; self.tableView.rowHeight = UITableViewAutomaticDimension; self.data = @[@"Cell 1 ", @"Cell 2", @"Cell 3", @"Cell 4", @"Cell 5", @"Cell 6", @"Cell 7", @"Cell 8"]; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 

相關推薦

iOS UITextView 輸入內容實時更新cell高度

http://www.cocoachina.com/ios/20141226/10778.html 這篇文章介紹了在一個動態資料的 table view 中,cell 根據 text view 內容的輸入實時改變 cell 和 table view 的高度。自動

iOS中使用AutoLayout動態調整Cell高度

之前做的不同高度的cell都是利用程式碼在HeightForRowAtIndexPath方法中計算cell高度來實現的,突然想用AL來實現一下動態Cell高度設定,先看看成果動圖: 下面提供主要思路程式碼,類似資料填充的就不提了。 建立自定義Cell類A

textarea文字框根據輸入內容多少自適應高度

/** * 文字框根據輸入內容自適應高度 * @param {HTMLElement} 輸入框元素 * @param {Number} 設定游標與輸入框保持的距離(預

iOS:如何優雅的讓UITextView根據輸入文字實時改變高度

demo前言: UITextView的高度隨著輸入文字實時的改變是app中非常常見的功能,社交軟體的文字輸入框、評論框都會用到 網上有很多UITextView的高度隨著輸入文字實時改變的demo,筆者看了很多,很多雖然可以實現相應的功能但是有些細節實現的不是很好,所以筆者

[iOS]UITextView輸入內容時游標不在最下方的解決方案

使用UITextView的時候經常出現游標不在最下方的情況。。。(iPhone6+iOS8) 解決方法: 首先去除所有的Padding: _textView.textContainerInset = UIEdgeInsetsZero; _textView.

iOS 根據文字內容設定cell高度

今天學習一個簡單的,根據內容的大小設定cell 的高度. 第一步:建兩個類,分別繼承於UIViewController 和UITableViewCell . 第二步: mainViewController.h #import <UIKit/UIKit.h>

輸入內容實時監測

輸入框內容實時監測 輸入框內容實時提示輸入框內容實時監測!只有輸入框內容發生改變才會觸發事件,如果輸入框內容沒有改變則不會觸發該事件!<script type="text/javascript" src="jquery-3.2.1.js"></script> <script ty

JavaScript 實現textarea限制輸入字數, 輸入框字數實時統計更新輸入實時字數計算移動端bug解決

表單 var 假設 字體 eve 大網 blog 無法 tin textarea稱文本域,又稱文本區,即有滾動條的多行文本輸入控件,在網頁的提交表單中經常用到。與單行文本框text控件不同,它不能通過maxlength屬性來限制字數,為此必須尋求其他方法來加以限制以達到預設

django form表單select下拉選單資料來源實時更新(每次訪問獲取一次資料庫內容)

重點是: Form類物件例項化的時候,在類裡邊__init()__函式中加入重新更新select資料來源 from django.shortcuts import render,redirect from app3 import models from app3 import form from

基於JQ 根據輸入內容自適應輸入高度 支援輸入增高 渲染時設定高度內容一致

// 呼叫方法 bootText('textarea', 50) // 第一個引數是class 或者 id 第二個引數是這個class或者id物件的最小高度 function bootText(cls, minHeight){ var idArr = $(cls);

iOS-談一談自適應Cell高度快取

目錄 系統如何計算的自適應高度? 系統計算的行高會不會被快取? 如何快取? 前幾天讀文件的時候發現一對方法 - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize NS_AVAILABL

iOS開發之獲取實時海拔高度

上一篇介紹了獲取當前氣壓值以及裝置相對高度的方法,現在我們來看一下如何獲取當前裝置絕對高度既海拔高度(除了直接看iPhone6的指南針)。 普及一下常識:海拔高度也稱絕對高度,就是某地與海平面的高度差,通常以平均海平面做標準來計算,是表示地面某個地點高出海平面

iOS開發之多種Cell高度自適應實現方案的UI流暢度分析

本篇部落格的主題是關於UI操作流暢度優化的一篇部落格,我們以TableView中填充多個根據內容自適應高度的Cell來作為本篇部落格的使用場景。當然Cell高度的自適應網上的解決方案是鋪天蓋地呢,今天我們的重點不是如何討論Cell高度的自適應,而是給出幾種Cell高度自適應的解決方案,然後對比起UI流暢度,從

實時監聽input輸入內容的N種方法

現在有一個需求,需要我們實時監聽input輸入框中的內容,從而帶來更好的使用者體驗,而不是等我們全部輸入完畢才告訴我們格式不對 首先我們建立一個input輸入框 <form name='loginForm'> &l

ios UITextView bug 輸入文字跳動bug問題 (・ˍ・*)

ios UITextView 輸入中文時文字跳動問題 當輸入中文文字多於顯示的textview框時,最後一行的文字有時候會因為輸入的時候而跳動把最後一行的文字蓋住一半,再輸入時卻又跳起來顯示 這是什麼詭異的bug,在調整公司專案的時候,出現了這個問題(♯▼皿▼) 以前沒碰到

iOS UITextView 內容顯示不全

當我們因為一些需求將UITextView當成UILabel使用(為了使用UITextView自帶的複製,貼上,選擇功能,自動識別電話,郵箱,連結等等),這時我們只需要禁用UITextView的幾個屬性就行了 textView.editable = NO;//不

Swing JTextField實時監聽鍵盤輸入內容

JTextField想要實時監聽鍵盤輸入內容必須實現DocumentListener介面 如圖:實現介面後會有這三個方法: implements DocumentListener 下面我們來看一下API中的介紹: 在API中可以看出 inse

UItableView Cell 高度自適應--隨著多個label內容變化自適應

1.cell .h檔案 // WorkReportCell.h // GOSProject // // Created by on 2017/5/11. // Copyright © 2017年 All rights reserved. // #import

關於iOS基礎總結(5)--tableView的優化、cell高度優化、記憶體優化

1、tableView的優化 iOS平臺因為UIKit本身的特性,需要將所有的UI操作都放在主執行緒執行,所以有時候就習慣將一些執行緒安全性不確定的邏輯,以及它執行緒結束後的彙總工作等等放到了主執行緒,所以主執行緒包含大量計算、IO、繪製都有可能造成卡頓。

iOS cell高度自適應 - 教你寫出優雅的table view

作為一個iOS開發者,自然少不了了table view打交道,table view中最令人頭疼的是各種cell的高度計算了,雖然技術上並不難,但是對於自定義cell來說一旦控制元件比較多,計算起來就會很麻煩,會出現很多和height相關的程式碼,萬一稍有偏差,就