1. 程式人生 > >TextField和TextView字數超出擷取問題

TextField和TextView字數超出擷取問題

在IOS開發中,我們經常需要對textfield和textView中的文字進行限制,
對於超出限制的內容進行擷取。但在實際開發過程中會遇到一些問題:
1.在輸入中文的時候,系統會在你開始拼音的時候就統計字數,使得你
   在輸最後幾個字時,拼音都打不全
2.對於表情,預設length為2,當表情超出限制時,一個表情的length會
   被截成1,導致亂碼

還有一種更簡單的方法,直接使用代理控制:
對於textView,實現下面兩個代理:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange
)range replacementText:(NSString *)text { NSString *strNew = [textView.text stringByReplacingCharactersInRange:range withString:text]; NSInteger res = MaxWordsLength - strNew.length; if (res >= 0) { return YES; }else { [UIView markToast:[NSString stringWithFormat:@"原因不能超過%@個字"
,@(MaxWordsLength)]]; return NO; } } - (void)textViewDidChange:(UITextView *)textView { if (textView.markedTextRange == nil && textView.text.length > MaxWordsLength) { textView.text = [textView.text substringToIndex:MaxWordsLength]; } }

而textfield沒有實時監控的代理,需要先給它新增方法:

[self.txf addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

//實現代理和自定義方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *strNew = [textField.text stringByReplacingCharactersInRange:range withString:string];
    NSInteger res = MaxWordsLength - strNew.length;
    if (res >= 0) {
        return YES;
    }else {
        [self showMessage:[NSString stringWithFormat:@"暱稱不能超過%@個字",@(MaxWordsLength)]];
        return NO;
    }
}

//shouldChangeCharacter不識別中文和聯想字,所以再加一個實時監控的方法
- (void)textFieldDidChange:(UITextField *)textField{
    if (textField.markedTextRange == nil && textField.text.length > MaxWordsLength) {
        textField.text = [textField.text substringToIndex:MaxWordsLength];
    }
}

相關推薦

TextFieldTextView字數超出擷取問題

在IOS開發中,我們經常需要對textfield和textView中的文字進行限制, 對於超出限制的內容進行擷取。但在實際開發過程中會遇到一些問題: 1.在輸入中文的時候,系統會在你開始拼音的時候就統計

textFieldtextView字數限制

在字元的限制中可能會遇到兩種情況, 第一種是如何將一個漢字相當於兩個字元的佔位空間, 第二種是當輸入法是中文時限制字元的判斷會出錯,因為textField :shouldChangeCharactersInRange:replacementString這

ios textfieldtextView完美簡單的字數限制

如果是textfield新增一個方法[self.textField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged] 如果是te

禁止textFieldtextView的複製貼上選單:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { if ([UIMenuController sharedMenuCont

iOS中TextField TextView 控制元件的基本使用

介紹-introduction This time I want to create a new simple project which is a self-introduction program to show some fundamental w

js控制當字數超出規定行數時顯示點點點

scrip 函數 jquery logs color ips row end function 調用方法: 每次只為一個元素服務,也就是傳入函數的選擇器(class名)頁面中只能有一個,或直接傳id; 比如: //1要限制字數的元素,2要顯示多少行,3要限制字數元素的

div或者p標籤單行多行超出顯示省略號

單行文字溢位顯示省略號 overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 多行文字顯示省略號 display: -webkit-box; -webkit-box-orient:&nb

android中關於textview字數顯示的問題

只需要下邊的設定: textview.setSingleLine(); textview.setEllipsiz(TextUtils.TruncateAt.valueOf("END")); 在xml中設定如下: android:singleLine="true" android:ell

TextFieldEditBox的 區別

   TextField和EditBox的 區別 TextField: 先新增標頭檔案: #include "cocostudio/CocoStudio.h" #include "ui/CocosGUI.h" USING_NS

TextFieldGraphics類

TextField類 java.awt.TextField類用來建立文字框物件 TextField有如下常用方法 TextField() TextField(int columns) TextField(String text) TextField(Stri

關於iOS對textView字數限制的一些解法

現在的伺服器一般是不會對字數做限制的,但是遇到一個需求需要對字數做限制,並且同時更新剩餘的字數,也許有些朋友會想著用textField或label來做,單是總是存在一些不完美,或一些其他的問題難解決. 用textField的話,自動換行是個難題,因為他並不提供這個屬性.

Android開發——線性佈局TextView基本用法

Android開發——線性佈局和TextView的基本用法 一、線性佈局-LinearLayout 在LinearLayout這個控制元件中,有這許多屬性可以設定,下面是最為基礎的屬性 <LinearLayout android:layout_wid

移動端textarea輸入框監聽輸入字數限制(相容iosAndroid)

html <div class="textareaBox"> <textarea class="wishContent" placeholder="請輸入不超過15個字" maxlength="15"></te

DEDECMS改變欄目的關鍵詞描述字數

1.改變欄目的關鍵詞和描述字數: 在系統工具---SQL命令列工具---執行SQL命令列:                 &nb

SpannableString中的ClickableSpanTextview點選事件衝突解決

背景描述:專案中有這樣的需求:在展示評論內容的Textview中展示文字,其中包含3種類型資料: 1、普通文字:評論內容或者回復內容。因為這個Textview是展示評論或者回復的,點選後,要展示軟鍵盤(popupwindow等忽略) 2、股票程式碼:該型別文

Androi實戰—EidtTextTextView顯示指定行數,內容過長自動換行問題

EidtText和TextView中內容過長的話自動換行,使用android:ellipsize與android:singleine可以解決,使只有一行。使用android:maxLines可設定最大行數。

給UITextView 頭部插入檢視(同理 給YYTextView加上頭部,解決scrollviewtextview衝突的問題)

PS: _headView要成為textview的子view      [textview addsubview:_headview]; 有時候我們需要在UITextView的上面插入檢視的樣式,並且要求其隨著輸入一起滑動,這時候沒有必要再加一個UIScrollVie

Html中文字過多,單行超出多行超出顯示省略號

本部落格主要介紹 前端開發中文字過多,以省略號顯示。 效果如圖:                單行: <!--單行--> <p class="pl">這個屬性定義溢位元

textarea輸入框監聽輸入字數限制

html <textarea class="wishContent" placeholder="請輸入不超過15個字" maxlength="15"> </textarea>

自定義TextView,解決計算listView中item高度的時候,如果其中的TextView字數超過一行,只計算到一行高度的問題

    動態計算listView中item 的高度時,如果其中textview超過一行,只會計算其中第一行的剛度,(雙層listview巢狀使用時經常出現這種問題)。我們需要自定義textview,動態計算textView的高度,具體程式碼如下 package com.e