日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

UITextField与UITextView的区别

發(fā)布時(shí)間:2025/6/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UITextField与UITextView的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

?UITextField繼承UIControl

?? ? 1.文字永遠(yuǎn)是一行,不能顯示多行文字

?? ? 2.有placehoder屬性設(shè)置占位文字

?? ? 3.繼承自UIControl

?? ? 4.監(jiān)聽(tīng)行為

?? ? 1> 設(shè)置代理

?? ? 2> addTarget:action:forControlEvents:

?? ? 3> 通知:UITextFieldTextDidChangeNotification

?

?UITextView繼承UIScrollView

? ? ?1.能顯示任意行文字

?? ? 2.不能設(shè)置占位文字

?? ? 3.繼承自UIScollView

?? ? 4.監(jiān)聽(tīng)行為

?? ? 1> 設(shè)置代理

?? ? 2> 通知:UITextViewTextDidChangeNotification

?

UITextField的詳細(xì)使用

1?設(shè)置邊框樣式,只有設(shè)置了才會(huì)顯示邊框樣式??

??text.borderStyle?=?UITextBorderStyleRoundedRect;

2?輸入框中是否有個(gè)叉號(hào),在什么時(shí)候顯示,用于一次性刪除輸入框中的內(nèi)容

??text.clearButtonMode?=?UITextFieldViewModeAlways;typedef?enum?{UITextFieldViewModeNever,??重不出現(xiàn)UITextFieldViewModeWhileEditing,?編輯時(shí)出現(xiàn)UITextFieldViewModeUnlessEditing,??除了編輯外都出現(xiàn)UITextFieldViewModeAlways???一直出現(xiàn) }?UITextFieldViewMode;

3?每輸入一個(gè)字符就變成點(diǎn)?用語(yǔ)密碼輸入

text.secureTextEntry?=?YES;

?

4?是否糾錯(cuò)

??text.autocorrectionType?=?UITextAutocorrectionTypeNo;typedef?enum?{UITextAutocorrectionTypeDefault,?默認(rèn)UITextAutocorrectionTypeNo,???不自動(dòng)糾錯(cuò)UITextAutocorrectionTypeYes,??自動(dòng)糾錯(cuò) }?UITextAutocorrectionType;

?

5?再次編輯就清空

??text.clearsOnBeginEditing?=?YES;

?

6?內(nèi)容的垂直對(duì)齊方式??

UITextField繼承自UIControl,此類中有一個(gè)屬性contentVerticalAlignmenttext.contentVerticalAlignment?=?UIControlContentVerticalAlignmentCenter;

?

7?設(shè)置為YES時(shí)文本會(huì)自動(dòng)縮小以適應(yīng)文本窗口大小??

??textFied.adjustsFontSizeToFitWidth?=?YES;//設(shè)置自動(dòng)縮小顯示的最小字體大小text.minimumFontSize?=?20;

?

8?設(shè)置鍵盤(pán)的樣式

??text.keyboardType?=?UIKeyboardTypeNumberPad;typedef?enum?{UIKeyboardTypeDefault,???????默認(rèn)鍵盤(pán),支持所有字符?????????UIKeyboardTypeASCIICapable,??支持ASCII的默認(rèn)鍵盤(pán)UIKeyboardTypeNumbersAndPunctuation,??標(biāo)準(zhǔn)電話鍵盤(pán),支持+*#字符UIKeyboardTypeURL,????????????URL鍵盤(pán),支持.com按鈕?只支持URL字符 UIKeyboardTypeNumberPad,??????????????數(shù)字鍵盤(pán) UIKeyboardTypePhonePad,?????電話鍵盤(pán)UIKeyboardTypeNamePhonePad,???電話鍵盤(pán),也支持輸入人名 UIKeyboardTypeEmailAddress,???用于輸入電子?郵件地址的鍵盤(pán)????? UIKeyboardTypeDecimalPad,?????數(shù)字鍵盤(pán)?有數(shù)字和小數(shù)點(diǎn)UIKeyboardTypeTwitter,????????優(yōu)化的鍵盤(pán),方便輸入@、#字符UIKeyboardTypeAlphabet?=?UIKeyboardTypeASCIICapable,? }?UIKeyboardType;

?

9?首字母是否大寫(xiě)

??text.autocapitalizationType?=?UITextAutocapitalizationTypeNone;typedef?enum?{UITextAutocapitalizationTypeNone,?不自動(dòng)大寫(xiě)UITextAutocapitalizationTypeWords,??單詞首字母大寫(xiě)UITextAutocapitalizationTypeSentences,??句子的首字母大寫(xiě)UITextAutocapitalizationTypeAllCharacters,?所有字母都大寫(xiě) }?UITextAutocapitalizationType;

?

?

10 return鍵變成什么鍵?

??text.returnKeyType?=UIReturnKeyDone;typedef?enum?{UIReturnKeyDefault,?默認(rèn)?灰色按鈕,標(biāo)有ReturnUIReturnKeyGo,??????標(biāo)有Go的藍(lán)色按鈕UIReturnKeyGoogle,標(biāo)有Google的藍(lán)色按鈕,用語(yǔ)搜索UIReturnKeyJoin,標(biāo)有Join的藍(lán)色按鈕UIReturnKeyNext,標(biāo)有Next的藍(lán)色按鈕UIReturnKeyRoute,標(biāo)有Route的藍(lán)色按鈕UIReturnKeySearch,標(biāo)有Search的藍(lán)色按鈕UIReturnKeySend,標(biāo)有Send的藍(lán)色按鈕UIReturnKeyYahoo,標(biāo)有Yahoo的藍(lán)色按鈕UIReturnKeyYahoo,標(biāo)有Yahoo的藍(lán)色按鈕UIReturnKeyEmergencyCall,?緊急呼叫按鈕 }?UIReturnKeyType;

?

11?鍵盤(pán)外觀

textView.keyboardAppearance=UIKeyboardAppearanceDefault;typedef?enum?{ UIKeyboardAppearanceDefault,?默認(rèn)外觀,淺灰色 UIKeyboardAppearanceAlert,?????深灰?石墨色 }?UIReturnKeyType;

?

?12?最右側(cè)加圖片是以下代碼左側(cè)類似

????UIImageView?*image=[[UIImageView?alloc]?initWithImage:[UIImage?imageNamed:@"right.png"]];text.rightView=image;text.rightViewMode?=?UITextFieldViewModeAlways;?typedef?enum?{UITextFieldViewModeNever,UITextFieldViewModeWhileEditing,UITextFieldViewModeUnlessEditing,UITextFieldViewModeAlways }?UITextFieldViewMode;

?

13?按return鍵鍵盤(pán)往下收??

[txtField?becomeFirstResponder];?????[text?resignFirstResponder]; [txtField?endEditing:YES];? [self.view?endEditing:YES];

?

14 重寫(xiě)繪制行為

除了UITextField對(duì)象的風(fēng)格選項(xiàng),你還可以定制化UITextField對(duì)象,為他添加許多不同的重寫(xiě)方法,來(lái)改變文本字段的顯示行為。這些方法都會(huì)返回一個(gè)CGRect結(jié)構(gòu),制定了文本字段每個(gè)部件的邊界范圍。以下方法都可以重寫(xiě)。

–?textRectForBounds:  ? ??//重寫(xiě)來(lái)重置文字區(qū)域

–?drawTextInRect:  ? ? ? ??//改變繪文字屬性.重寫(xiě)時(shí)調(diào)用super可以按默認(rèn)圖形屬性繪制,若自己完全重寫(xiě)繪制函數(shù),就不用調(diào)用super了.

–?placeholderRectForBounds:  //重寫(xiě)來(lái)重置占位符區(qū)域

–?drawPlaceholderInRect:  //重寫(xiě)改變繪制占位符屬性.重寫(xiě)時(shí)調(diào)用super可以按默認(rèn)圖形屬性繪制,若自己完全重寫(xiě)繪制函數(shù),就不用調(diào)用super了.

–?borderRectForBounds:  //重寫(xiě)來(lái)重置邊緣區(qū)域

–?editingRectForBounds:  //重寫(xiě)來(lái)重置編輯區(qū)域

–?clearButtonRectForBounds:  //重寫(xiě)來(lái)重置clearButton位置,改變size可能導(dǎo)致button的圖片失真

–?leftViewRectForBounds:

–?rightViewRectForBounds:

?

15 委托方法

-?(BOOL)textFieldShouldBeginEditing:(UITextField?*)textField{?? //返回一個(gè)BOOL值,指定是否循序文本字段開(kāi)始編輯??return?YES;?? }??-?(void)textFieldDidBeginEditing:(UITextField?*)textField{??//開(kāi)始編輯時(shí)觸發(fā),文本字段將成為first?responder?? }??-?(BOOL)textFieldShouldEndEditing:(UITextField?*)textField{?? //返回BOOL值,指定是否允許文本字段結(jié)束編輯,當(dāng)編輯結(jié)束,文本字段會(huì)讓出first?responder??//要想在用戶結(jié)束編輯時(shí)阻止文本字段消失,可以返回NO??//這對(duì)一些文本字段必須始終保持活躍狀態(tài)的程序很有用,比如即時(shí)消息??return?NO;?? }??-?(BOOL)textField:(UITextField*)textField?shouldChangeCharactersInRange:(NSRange)range?replacementString:(NSString?*)string{?? //當(dāng)用戶使用自動(dòng)更正功能,把輸入的文字修改為推薦的文字時(shí),就會(huì)調(diào)用這個(gè)方法。?? //這對(duì)于想要加入撤銷選項(xiàng)的應(yīng)用程序特別有用?? //可以跟蹤字段內(nèi)所做的最后一次修改,也可以對(duì)所有編輯做日志記錄,用作審計(jì)用途。????? //要防止文字被改變可以返回NO?? //這個(gè)方法的參數(shù)中有一個(gè)NSRange對(duì)象,指明了被改變文字的位置,建議修改的文本也在其中??return?YES;?? }??-?(BOOL)textFieldShouldClear:(UITextField?*)textField{??//返回一個(gè)BOOL值指明是否允許根據(jù)用戶請(qǐng)求清除內(nèi)容?? //可以設(shè)置在特定條件下才允許清除內(nèi)容??return?YES;?? }??-(BOOL)textFieldShouldReturn:(UITextField?*)textField{??//返回一個(gè)BOOL值,指明是否允許在按下回車(chē)鍵時(shí)結(jié)束編輯??//如果允許要調(diào)用resignFirstResponder?方法,這回導(dǎo)致結(jié)束編輯,而鍵盤(pán)會(huì)被收起[textField?resignFirstResponder]; //查一下resign這個(gè)單詞的意思就明白這個(gè)方法了??return?YES;?? }

?

16?通知

UITextField派生自UIControl,所以UIControl類中的通知系統(tǒng)在文本字段中也可以使用。除了UIControl類的標(biāo)準(zhǔn)事件,你還可以使用下列UITextField類特有的事件

UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification

當(dāng)文本字段退出編輯模式時(shí)觸發(fā)。通知的object屬性存儲(chǔ)了最終文本。

因?yàn)槲谋咀侄我褂面I盤(pán)輸入文字,所以下面這些事件發(fā)生時(shí),也會(huì)發(fā)送動(dòng)作通知

UIKeyboardWillShowNotification???//鍵盤(pán)顯示之前發(fā)送 UIKeyboardDidShowNotification????//鍵盤(pán)顯示之后發(fā)送 UIKeyboardWillHideNotification???//鍵盤(pán)隱藏之前發(fā)送 UIKeyboardDidHideNotification????//鍵盤(pán)隱藏之后發(fā)送

?

UITextField的運(yùn)用

1 限制只能輸入特定的字符

?-(BOOL)textField:(UITextField?*)textField?shouldChangeCharactersInRange:(NSRange)range?replacementString:(NSString?*)string{NSCharacterSet?*cs;cs?=?[[NSCharacterSet?characterSetWithCharactersInString:NUMBERS]invertedSet];NSString?*filtered?=?[[string?componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];?//按cs分離出數(shù)組,數(shù)組按@""分離出字符串BOOL?canChange?=?[string?isEqualToString:filtered];return?canChange; }

?上面那個(gè)NUMBERS是一個(gè)宏,可以在文件頂部定義:

#define NUMBERS @”0123456789\n”?(這個(gè)代表可以輸入數(shù)字和換行,請(qǐng)注意這個(gè)\n,如果不寫(xiě)這個(gè),Done按鍵將不會(huì)觸發(fā),如果用在SearchBar中,將會(huì)不觸發(fā)Search事件,因?yàn)槟阕约合拗撇蛔屳斎隲n,好慘,我在項(xiàng)目中才發(fā)現(xiàn)的。)

所以,如果你要限制輸入英文和數(shù)字的話,就可以把這個(gè)定義為:

#define kAlphaNum ? @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。

當(dāng)然,你還可以在以上方法return之前,做一提示的,比如提示用戶只能輸入數(shù)字之類的。如果你覺(jué)得有需要的話。

?

2 限制只能輸入一定長(zhǎng)度的字符

?-?(BOOL)textField:(UITextField?*)textField?shouldChangeCharactersInRange:(NSRange)range?replacementString:(NSString?*)string;? {??//string就是此時(shí)輸入的那個(gè)字符?textField就是此時(shí)正在輸入的那個(gè)輸入框?返回YES就是可以改變輸入框的值?NO相反 if?([string?isEqualToString:@"\n"])??//按會(huì)車(chē)可以改變{?return?YES;?}?NSString?*?toBeString?=?[textField.text?stringByReplacingCharactersInRange:range?withString:string];?//得到輸入框的內(nèi)容if?(self.myTextField?==?textField)??//判斷是否時(shí)我們想要限定的那個(gè)輸入框{?if?([toBeString?length]?>?20)?{?//如果輸入框內(nèi)容大于20則彈出警告textField.text?=?[toBeString?substringToIndex:20];?UIAlertView?*alert?=?[[[UIAlertView?alloc]?initWithTitle:nil?message:@"超過(guò)最大字?jǐn)?shù)不能輸入了"?delegate:nil?cancelButtonTitle:@"Ok"?otherButtonTitles:nil,?nil]?autorelease];?[alert?show];?return?NO;?}?}?return?YES;? }

?

3 編輯時(shí)候,視圖在鍵盤(pán)頂部

self.textField.delegate?=?self; #pragma?mark?-?UITextField -?(void)textFieldDidBeginEditing:(UITextField?*)textField {//1.發(fā)送監(jiān)控鍵盤(pán)通知[[NSNotificationCenter?defaultCenter]?addObserver:self?selector:@selector(keyboardDidChangeFrame:)?name:UIKeyboardWillChangeFrameNotification?object:nil];}-?(void)keyboardDidChangeFrame:(NSNotification?*)notification {????//視圖坐標(biāo)變化NSDictionary?*userInfo?=?notification.userInfo;//動(dòng)作時(shí)間double?duration?=?[userInfo[UIKeyboardAnimationDurationUserInfoKey]?doubleValue];//鍵盤(pán)彈出結(jié)束的frameCGRect?keyBoardRect?=?[userInfo[UIKeyboardFrameEndUserInfoKey]?CGRectValue];if?(CGRectGetMaxY(self.scrollView.frame)?>=?keyBoardRect.origin.y)?{[UIView?animateWithDuration:duration?animations:^{self.view.y?=?keyBoardRect.origin.y?-?self.view.height?+?self.viewIndex;}];}} //3.?釋放通知 -?(void)didReceiveMemoryWarning?{[super?didReceiveMemoryWarning];[[NSNotificationCenter?defaultCenter]?removeObserver:self];}

轉(zhuǎn)載于:https://my.oschina.net/u/2346786/blog/500392

總結(jié)

以上是生活随笔為你收集整理的UITextField与UITextView的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。