這些基本的屬性和方法很簡單,但是很重要.好多程序員同志有時候就記不起來了,所我在這兒做一個總結,希望能幫助到大家!??
實際App中的登錄界?面并?非是由一個一個?色塊組成,?而是由標簽(UILabel)求厕、輸?入框(UITextField)和按鈕(UIButton)組成
一.首先UITextFiled:
UITextField是什么:
UITextField(輸入框):是控制文本輸入和顯示的控件琳袄。在App中UITextField出現(xiàn)頻率也比較高兢仰。
iOS系統(tǒng)借助虛擬鍵盤實現(xiàn)輸入,當點擊輸入框,系統(tǒng)會自動調(diào)出鍵盤,?便 你進一步操作。在你不需要輸入的時候,可以使用收回鍵盤的方法,收回彈出的鍵盤江解。
UITextField和UILabel相比,UILabel主要用于文字顯示纲熏,不能編輯枕屉,UITextField允許用戶編輯文字(輸入)
如何創(chuàng)建UITextField
1、開辟空間并初始化(如果本類有初始化?方法,使?用?自?己的;否則 使?用?父類的(UIButton就是一個本類初始化方法,下面會提到))衬廷。
2、設置?文本顯?示汽绢、輸?入相關的屬性
3吗跋、添加到?父視圖上,?用以顯?示
4、釋放
UITextField代碼如下:
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100,100,200,30)];
textField.backgroundColor = [UIColor whiteColor];
//邊框樣式
//textField.borderStyle = UITextBorderStyleRoundedRect;//這個屬性會跟UIImage起沖突
textField.borderStyle = UITextBorderStyleNone;
//占位符(在文本框中顯示內(nèi)容宁昭,起到一個占位的作用)
//比如要輸入密碼跌宛,那這兒就寫:“請輸入密碼”
textField.placeholder = @"";
textField.tag = 100;
//二次輸入,清空上一次的文本內(nèi)容
textField.clearsOnBeginEditing = YES;
//設置背景圖片积仗,需要設置為
UITextBorderStyleNonetextField.background = [UIImage imageName:@""];//輸入你要插入的圖片的名稱
//設置是否可以編輯textField.enabled = YES;
//設置密碼(是否為圓點或者星號)
textField.secureTextEntry = YES;
//修改鍵盤樣式textField.keyboardType = UIKeyboardTypeEmailAddress;
//設置鍵盤顏色
textField.keyboardAppearance = UIKeyboardAppearanceDark;
//修改return鍵文字
textField.returnKeyType = UIReturnKeyJoin;
//成為第一響應者疆拘,剛一進來,鍵盤就會彈出來
[textField becomeFirstResponder];
//下面這段代碼是將鍵盤用一段紅色的區(qū)域遮蓋掉(可以在這片區(qū)域上自定義鍵盤樣式)
UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.window.frame.size.width,200)];
inputView.backgroundColor = [UIColor redColor];
textField.inputView = inputView;
//在鍵盤的上面部分出現(xiàn)一部分藍色區(qū)域
UIView *inputAccessoryView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.window.frame.size.width,100)];
inputAccessoryView.backgroundColor = [UIColor blueColor];
textField.inputAccessoryView = inputAccessoryView;
//清除按鈕顯示模式(當在編譯的時候就會出現(xiàn)一個小X號)
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
//左視圖
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0,0,30,30)];
leftView.backgroundColor = [UIColor redColor];
textField.leftView = leftView;
textField.leftViewMode = UITextFieldViewModeAlways;
delegate協(xié)議(點擊return回收鍵盤)
步驟:
1.將AppDelegate作為UITextField的delegate(你的UITextField在那個類里面寫的就用它作為UITextField的delegate)
2.AppDelegate.h文件接受UITextFieldDelegate協(xié)議
3.AppDelegate.m文件顯示textFieldShouldReturn:方法
#import "AppDelegate.h"
//第二步:遵守協(xié)議
@interface AppDelegate ()<UITextFieldDelegate>
@end
#import "AppDelegate.m"
@implementation AppDelegate
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//寫一個UITextField //第一步:將當前類對象設置為輸入框代理
textField.delegate = self;
}
//第三步:實現(xiàn)協(xié)議方法-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
//釋放第一響應者(可以讓鍵盤自動收放)
[textField resignFirstResponder];
return YES;
}
下面是AppDelegate里面的應用程序代理,相關方法解釋
二.UITextView相關屬性,方法介紹:
相關屬性:
//初始化并定義大小
UITextView*textview = [[UITextViewalloc] initWithFrame:CGRectMake(20, 10,280, 30)];
textview.backgroundColor=[UIColor whiteColor]; //背景色
textview.scrollEnabled= NO; //當文字超過視圖的邊框時是否允許滑動寂曹,默認為“YES”
textview.editable = YES; //是否允許編輯內(nèi)容哎迄,默認為“YES”
textview.delegate = self; //設置代理方法的實現(xiàn)類
textview.font=[UIFont fontWithName:@"Arial" size:18.0]; //設置字體名字和字體大小;
textview.returnKeyType=UIReturnKeyDefault;//return鍵的類型
textview.keyboardType=UIKeyboardTypeDefault;//鍵盤類型
textview.textAlignment=NSTextAlignmentLeft;//文本顯示的位置默認為居左
textview.dataDetectorTypes = UIDataDetectorTypeAll; //顯示數(shù)據(jù)類型的連接模式(如電話號碼、網(wǎng)址隆圆、地址等)
textview.textColor = [UIColor blackColor];
textview.text = @"UITextView詳解";//設置顯示的文本內(nèi)容
[self.view addSubview:textview];
UITextView的代理方法如下:
//textView是否應該開始編輯
- (BOOL)textViewShouldBeginEditing:(UITextView*)textView;
//textView是否應該結束編輯
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
//開始編輯
- (void)textViewDidBeginEditing:(UITextView *)textView;
//結束編輯
- (void)textViewDidEndEditing:(UITextView *)textView;
//內(nèi)容區(qū)是否應該改變編輯
- (BOOL)textView:(UITextView *)textViewshouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
//內(nèi)容發(fā)生改變編輯
- (void)textViewDidChange:(UITextView *)textView;
//焦點發(fā)生改變
- (void)textViewDidChangeSelection:(UITextView*)textView;
#有時我們需要控件自適應輸入的文本的內(nèi)容的高度,只要在textViewDidChange的代理方法中加入調(diào)整控件的大小的代理即可
- (void)textViewDidChange:(UITextView *)textView
{
//計算文本的高度
//constraintSize(約束尺寸)
CGSize constraintSize;
constraintSize.width = textView.frame.size.width - 16;
constraintSize.height = MAXFLOAT;
CGSize sizeFrame = [textView.text sizeWithFont:textView.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
//重新調(diào)整textView的高度
textView.fram = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, sizeFrame.height + 5);
}
#控制輸入文字的長度和內(nèi)容,可通過調(diào)用一下代理方法實現(xiàn)
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if(range.location >= 150){
//控制輸入文本的長度
return NO;
}
if([text isEqualToString:@"\n"]){
//禁止輸入換行
return NO;
}else{
return YES;
}
}
//UITextView中退出鍵盤的幾種方法
#1.如果在textView中,鍵盤上的回車鍵不用,那么就可以把回車鍵當成退出鍵盤的響應鍵.
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
returnNO;
}
return YES;
}
#2.如果工程里面有導航欄,那么就在導航欄上設置一個按鈕,用來當做退出鍵盤的響應鍵
- (void)textViewDidBeginEditing:(UITextView *)textView{
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(backKeyBoard)];
self.navigationItem.rightBarButtonItem = nil;
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
self.navigationItem.rightBarButtonItem = nil;
}
- (void)backKeyBoard
{
[ self.textView resignFirstResponder];
}
#3.可以自定義按鈕,添加在鍵盤上面,用來退出.
- (void)viewDidLoad
{
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 30)];
//設置toolbar的樣式顏色
[toolbar setBarStyle:UIBarStyleBlack];
UIBarButtonItem *btnSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone taget:self action:@selector(backKeyBoard)];
NSArray *buttonsArr = @[btnSpace,btnDone];
[toolbar setItems:buttonsArr];
在文本輸入框上加toolbar
[textView setInputAccessoryView:topView];
}
- (void)backKeyBoard
{
[textView resignFirstResponder];
}
UIButton相關屬性
//初始化的時候有自己的方法,不用父類的
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(100,100,200,30);
//設置按鈕文字(有好多樣式漱挚,你可以試試)
[button setTitle:@"登錄" forState:UIControlStateNormal];
//一直點著按鈕的時候就會變成下面的title
[butto setTitle:@"loading" forState:UIControlStateHighlighted];
//設置點擊的時候是否有光照button.showsTouchWhenHighlighted = YES;
//給button(添加)綁定事件
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
//添加了一個方法
-(void) buttonAction:(UIButton *)sender
{
//摁了button鍵后,文本框的內(nèi)容就會顯示在上一篇提到的label上
UITextField *textField = (UITextField *)[self.window viewWithTag:100];
UILabel *label = (UILabel *)[self.window viewWithTag:101];
label.text = textFied.text;
}