一级毛片免费不卡在线视频,国产日批视频免费在线观看,菠萝菠萝蜜在线视频免费视频,欧美日韩亚洲无线码在线观看,久久精品这里精品,国产成人综合手机在线播放,色噜噜狠狠狠综合曰曰曰,琪琪视频

[IOS 開發(fā)]基本 UI 控件詳解 (UIButton | UITextFie -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.oriental01.com - 電腦資料】

   

1. UI 控件分類

    UI 控件分類: 活動(dòng)控件, 被動(dòng)控件, 靜態(tài)控件;

    --活動(dòng)控件: 繼承了 UIControl 基類, 該類控件可以與用戶交互, 對應(yīng)操作會(huì)激發(fā)對應(yīng)的 事件綁定回調(diào)方法, 之前的 UIButton 就是這種控件;

    --靜態(tài)控件: 繼承了 UIView 基類, 該類控件與用戶之間不能交互, 之前使用的 UILabel 就是這種控件;

    --被動(dòng)控件: 該類控件可以接受用戶操作, 通常用于接收用戶輸入, 這種方法不會(huì)觸發(fā) IBAction 方法, 文本框就是一種被動(dòng)控件;

2. UIControl 介紹

(1) UIControl 簡介

    UIControl 簡介:

    --使用頻率: UIControl 控件一般不會(huì)被使用, 經(jīng)常被使用的是 UIControl 的子類 UI 控件;

    --UIControl 主要作用: 定義通用接口, 為活動(dòng)控件的事件機(jī)制提供實(shí)現(xiàn), 發(fā)生指定的動(dòng)作后, 控件會(huì)初始化 Action 方法, 回調(diào)對應(yīng)的事件處理方法;

    --事件處理方法: UI 控件繼承 UIControl 方法, 在 Interface Builder 關(guān)聯(lián)到 IBAction 方法, 這個(gè)方法就是事件處理方法;

(2) UIControl 方法

    UIControl 方法:

    --- (void) addTarget : (id) target action : (SEL) action forControlEvents : (UIControlEvents) events 方法: 注冊事件處理方法, target 方法所在對象, action 方法的 SEL 參數(shù), forControlEvents UIControlEvents 類型的枚舉值;

    --- (void) removeTarget : (id) target action : (SEL) action forControlEvents : (UIControlEvents) events 方法: 移除之前注冊的事件處理方法;

    --- (NSArray *) actionsForTarget : (id) target forControlEvents : (UIControlEvents) controlEvent 方法: 獲取注冊的方法;

    --- (NSSet *) allTargets 方法: 獲取方法對象集合;

    --- (UIControlEvents) allControlEvents 方法: 獲取所有的事件集合;

(3) UI 控件狀態(tài)

    UI 控件狀態(tài):

    --普通: UI 控件的默認(rèn)狀態(tài);

    --高亮: UI 控件突出顯示, 處于高亮狀態(tài); 手放在按鈕上處于高亮狀態(tài);

    --禁用: UI 控件關(guān)閉后, 處于禁用狀態(tài); 禁用狀態(tài)的控件不可操作, 禁用操作在 Interface Builder 取消 Enable 復(fù)選框;

    --選中: 用于標(biāo)識(shí)控件已啟用 或 被選中, 選中狀態(tài)可以不斷持續(xù), 高亮狀態(tài)只在 按下才顯示;

(4) UI 控件狀態(tài)

    UI 控件狀態(tài):

    --enabled: UIControl 控件是否可用;

    --selected: 該屬性判斷該 UIControl 控件是否被選中;

    --highlighted: UIControl 控件是否高亮;

   

(5) UIControl 觸摸方法

    UIControl 常用觸摸方法:

    --beginTrackingWithTouch : withEvent : 方法: 開始觸摸 UIControl 控件時(shí)會(huì)回調(diào)該方法;

    --continueTrackingWithTouch : withEvent : 方法: 連續(xù)觸摸 UIControl 控件時(shí)會(huì)激發(fā)該方法;

    --endTrackingWithTouch : withEvent : 方法: 結(jié)束碰觸 UIControl 控件時(shí)會(huì)激發(fā)該方法;

二. UIButton 控件

1. 按鈕屬性詳解

   

(1) Type 屬性

    Type 屬性:如果需要自定義按鈕, 使用 Custom 屬性;

    --Custom: 外觀靠開發(fā)者設(shè)置, 效果如下 :

   

    --System: 默認(rèn)按鈕風(fēng)格, 默認(rèn)按鈕, 效果如下 :

   

    --Detail Disclosure: i 圖標(biāo), 常用與顯示列表詳情, 效果如下 :

   

    --Info Light | Info Dark: 顯示 i 圖標(biāo), 顯示簡短的說明信息, 效果如下 :

   

    --Add Contact: 顯示 + 按鈕, 常用于添加內(nèi)容, 效果如圖 :

   

(2) State Config 屬性

    UIButton 狀態(tài): 每種狀態(tài)都可以設(shè)置不同的 文本, 圖片, 格式;

   

    --Default: 默認(rèn)狀態(tài);

    --Highlighted: 用戶碰觸時(shí)的高亮狀態(tài);

    --Selected: 被選中時(shí)的狀態(tài);

    --Disabled: 禁用狀態(tài);

    為不同狀態(tài)的 UIButton 設(shè)置樣式:

    --setTittle : forState : 方法: UIButton 不同狀態(tài) 設(shè)置不同的標(biāo)題;

    --setTittleColor : forState : 方法: UIButton 不同狀態(tài)設(shè)置不同的標(biāo)題顏色;

    --setTittleShadowColor : forState : 方法: UIButton 不同狀態(tài) 設(shè)置 不同的按鈕中文本的陰影設(shè)置顏色;

    --setBackgroundImage : forState : 方法: UIButton 不同狀態(tài)設(shè)置不同的背景圖片;

    --setImage : forState : 方法: UIButton 不同狀態(tài)設(shè)置不同圖片;

    forState 參數(shù): UIControlState 整數(shù)枚舉值;

    --UIControlStateNormal: 默認(rèn)正常狀態(tài);

    --UIControlStateHighlighted: 高亮狀態(tài);

    --UIControlStateDisabled: 禁用狀態(tài);

    --UIControlStateSelected: 被選中狀態(tài);

(3) Tittle 屬性

    Tittle 屬性: 設(shè)置不同的文本方式;

   

    --Plain 屬性值: 默認(rèn)即可;

    --Attribute 屬性值:

(4) Tittle 屬性

    Font 屬性: 用于控制文字的 字體, 大小, 風(fēng)格;

   

(5) Text Color | Shadow Color 屬性

   

    Text Color 屬性: 控制文本的顏色;

    Shadow Color 屬性: 控制文本陰影的顏色;

(6) Image 屬性

    Image 屬性: 為按鈕設(shè)置圖片, 設(shè)置后該按鈕會(huì)成為圖片按鈕, 之前設(shè)置的 Tittle 屬性作廢;

   

(7) Background 屬性

    Background 屬性: 用于為按鈕設(shè)置背景圖片;

   

    --文本圖片共存: 該屬性可以設(shè)置 文本 和 圖片 共同作為按鈕背景, 比使用 Image 屬性設(shè)置圖片 顯示內(nèi)容 更豐富;

(8) Shadow Offset 屬性

    Shadow Offset 屬性:

   

    --偏移值: 控制 UILabel 控件內(nèi)陰影文本與 正常文本 之間的偏移量;

    --偏移方向: 需要為 水平 和 垂直 兩個(gè)方向 分別指定兩個(gè)值;

    --Horizontal 水平方向: > 0 向右偏移, < 0 向左偏移;

    --Vertical 垂直方向: > 0 向下偏移, < 0 向上偏移;

(9) Line Break 屬性

    Line Break: 文本截?cái)嗟膶傩?

   

(10) Edge 屬性

    Edge 屬性: 控制按鈕邊界;

   

    --Content: 按鈕內(nèi)容作為按鈕邊界;

    --Tittle: 按鈕的標(biāo)題文本作為邊界;

    --Image: 按鈕圖片作為按鈕邊界;

(11) Inset 屬性

    Inset 屬性:

   

    --作用: 控制按鈕邊界間距, 在按鈕四周留出空白;

    --間距值: 該屬性需要設(shè)置 Top, Bottom, Left 和 Right 四個(gè)值代表 上 下 左 右 間距;

2. 按鈕示例

(1) 創(chuàng)建 Detail Disclosure 按鈕

    創(chuàng)建 Detail Disclosure 按鈕: UIButton 的 Type 屬性類型是 Detail Disclosure;

   

(2) 創(chuàng)建 Add Contact 按鈕

    創(chuàng)建 Add Contact 按鈕: 設(shè)置 UIButton 的 Type 屬性類型是 Add Contact;

   

(3) 創(chuàng)建 Info Light | Info Dark 按鈕

    創(chuàng)建 Info Light 按鈕:

   

    創(chuàng)建 Info Dark 按鈕:

   

(4) 創(chuàng)建 文字 按鈕

    創(chuàng)建文字按鈕:

    --Type 屬性: 設(shè)置為 Custom;

    --Default 狀態(tài)設(shè)置: 設(shè)置 文本顏色 紅色, 設(shè)置 陰影顏色 藍(lán)色;

   

    --HighLighted 狀態(tài): 設(shè)置 文本顏色 粉色, 陰影顏色藍(lán)色;

   

    --Selected 狀態(tài): 設(shè)置文本顏色 粉色, 陰影顏色 藍(lán)色;

   

(5) 創(chuàng)建 圖片 按鈕

    創(chuàng)建 圖片 按鈕:

    --設(shè)置 Type 參數(shù): 設(shè)置為 Custom;

    --設(shè)置 Default 參數(shù): 設(shè)置 Image 參數(shù) 1.png;

   

    --設(shè)置 HighLighted 參數(shù): 設(shè)置 Image 參數(shù) 2.png;

   

(6) 示例

    示例展示:

   

三. UITextField 控件

1. UITextField 屬性

(1) PlaceHolder 屬性

    PlaceHolder 屬性: 屬性值是一個(gè)字符串, 再文本框沒有輸入內(nèi)容時(shí), 文本框內(nèi)顯示的灰色文本, 用于作為文本框提示信息;

   

(2) Border Style. 屬性

    Border Style. 屬性: 設(shè)置文本框邊框風(fēng)格, 支持四種風(fēng)格, 一般情況下是選擇最右邊的圓角矩形按鈕;

   

(3) Clear Button 屬性

    Clear Button 屬性: 文本框右邊的 x 標(biāo)識(shí)按鈕, 用戶單擊該圖片, 清空文本框內(nèi)容;

   

    --Never appears: 不顯示清除按鈕;

    --Appears while editing: 編輯內(nèi)容時(shí)顯示清除按鈕;

    --Appears unless editing: 除了編輯之外, 都會(huì)顯示清除按鈕;

    --Is always visible: 一直可見;

    Clear when editing begins 復(fù)選框: 每次編輯文本框時(shí), 自動(dòng)清除文本框中原有內(nèi)容;

(4) Min Font Size | Adjust to Fit 屬性

    Adjust to Fit 復(fù)選框: 指定文本字體是否隨著文本框縮小 而 減小;

    --作用: 勾選該復(fù)選框可以確保整個(gè)文本在文本框總是可見;

   

    Min Font Size 屬性:

    --作用: 指定文本框內(nèi)文本的最小值, 保證文本框內(nèi)文本不會(huì)因?yàn)樘《床灰?

   

(5) Capitalization 屬性

    Capitalization 屬性:

    --None: 不切換大小寫;

    --Words: 自動(dòng)將首字母轉(zhuǎn)大寫字母;

    --Sentence: 每個(gè)句子首字母轉(zhuǎn)為大寫字母;

    --All Characters: 將每個(gè)字母轉(zhuǎn)為大寫字母;

   

(6) Correction 屬性

    Correction 屬性: 自動(dòng)更正屬性;

    --No: 不自動(dòng)更正字母;

    --Yes: 自動(dòng)更正字母;

   

(7) KeyBoard 屬性

    KeyBoard 屬性: 設(shè)置虛擬鍵盤類型,;

   

    --Default: 默認(rèn)虛擬鍵盤;

    --ASCII Capable: 英文字母鍵盤;

    --Numbers and Production: 數(shù)字 和 標(biāo)點(diǎn)符號(hào)鍵盤;

    --Number Pad: 數(shù)字鍵盤;

    --Phone Pad: 電話撥號(hào)鍵盤;

    --E-mail Address: E-mail 地址虛擬鍵盤;

    --Decimal Pad: 數(shù)字 小數(shù)點(diǎn) 虛擬鍵盤;

(8) Return Key 屬性

    Return Key 屬性: 按下文本框中的 return 鍵行為,;

   

    --默認(rèn)選項(xiàng): 通常使用 Done 屬性值;

    Return Key 復(fù)選框:

   

    --Auto-enable Return Key: 勾選復(fù)選框, return 框默認(rèn)禁用, 輸入文本后可用, 用于強(qiáng)制用戶必須輸入內(nèi)容;

    --Secure: 勾選后, 輸入內(nèi)容以黑點(diǎn)顯示, 用于輸入密碼;

2. 用戶登錄界面示例

(1) 用戶名 UI 設(shè)置

    用戶名設(shè)置:

    --設(shè)置 UILabel: 設(shè)置 Text 屬性值為 用戶名 : ;

   

    --設(shè)置 Text Field 輸入框: Placeholder 屬性值設(shè)置為 請輸入用戶名, Clear Button 屬性選擇 Appear while editing, Return 列表選擇 Done 屬性, 勾選 Auto-enable Return Key 復(fù)選框;

   

(2) 密碼 UI 設(shè)置

    密碼 UI 設(shè)置: 創(chuàng)建一個(gè) Text Field 控件, 設(shè)置下面的屬性;

   

    --Placeholder 屬性: 設(shè)置 請輸入密碼 提示字符串;

    --Clear Button 屬性: 設(shè)置 Appear while editing 選項(xiàng), 當(dāng)編輯時(shí)出現(xiàn)取消按鈕;

    --Keyboard 屬性: 選擇 Number Pad 顯示 數(shù)字虛擬鍵盤;

    --Secure 屬性: 選中該復(fù)選框, 輸入內(nèi)容都是小圓點(diǎn);

(3) 示例

    示例演示:

    --Interface Builder 設(shè)計(jì):

   

    --用戶名展示:

   

    --密碼展示:

   

3. 輸入完后關(guān)閉鍵盤

(1) 設(shè)置 IBOutlet

    設(shè)置 IBOutlet:

    --拖控件到 OCViewController 中: control + 左鍵 拖動(dòng)控件到 ViewController 中;

   

    --設(shè)置 IBOutlet 參數(shù):

   

    --自動(dòng)生成的代碼:

@property (strong, nonatomic) IBOutlet UITextField *userName;

(2) 設(shè)置 IBAction

    設(shè)置 IBAction 參數(shù):

    --拖動(dòng)控件到 OCViewController:

   

    --設(shè)置 IBAction 參數(shù):

   

    --OCViewController.h 生成的代碼:

- (IBAction)userNameInput:(id)sender;

    --OCViewController.m 代碼:

- (IBAction)userNameInput:(id)sender {}

(3) 代碼示例

    代碼示例:

    --OCViewController.h:

////  OCViewController.h//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController@property (strong, nonatomic) IBOutlet UITextField *userName;- (IBAction)userNameInput:(id)sender;@end</uikit>

    --OCViewController.m:

////  OCViewController.m//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad{    [super viewDidLoad];	// Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)userNameInput:(id)sender {    //sender 放棄響應(yīng), 虛擬鍵盤消失    [self.userName resignFirstResponder];}@end

4. 觸摸背景關(guān)閉虛擬鍵盤

(1) 修改 Custom Class

    修改背景類別:

    --修改原因: 默認(rèn)的背景控件時(shí) UIView, 該控件沒有 IBAction 事件, 因此需要將背景控件設(shè)置為 UIControl;

    --修改方法: 使用 command + option + 3 打開身份檢查器面板, 將 Custom Class 設(shè)置為 UIControl 類;

   

    --修改后:

   

(2) 設(shè)置 IBOutlet

    設(shè)置 IBOutlet:

    --設(shè)置過程: 將用戶名 和 密碼 輸入框 拖到 OCViewController.h 中;

    --代碼示例:

@property (strong, nonatomic) IBOutlet UITextField *userName;@property (strong, nonatomic) IBOutlet UITextField *pswTextField;

(3) 設(shè)置 IBAction

    設(shè)置 IBAction:

    --設(shè)置過程: 使用 control + 鼠標(biāo)左鍵, 將背景控件 UIControl 設(shè)置 IBAction 到 OCViewController.h 中;

    --IBAction 屬性:

   

    --代碼示例:

- (IBAction)cancelTextField:(id)sender;

(4) 代碼示例

    代碼示例:

    --OCViewController.h:

////  OCViewController.h//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController@property (strong, nonatomic) IBOutlet UITextField *userName;@property (strong, nonatomic) IBOutlet UITextField *pswTextField;- (IBAction)userNameInput:(id)sender;- (IBAction)pwdInput:(id)sender;- (IBAction)cancelTextField:(id)sender;@end</uikit>

    --OCViewController.m:

////  OCViewController.m//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad{    [super viewDidLoad];	// Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)userNameInput:(id)sender {    //sender 放棄響應(yīng), 虛擬鍵盤消失    [self.userName resignFirstResponder];}- (IBAction)pwdInput:(id)sender {}- (IBAction)cancelTextField:(id)sender {    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];}@end

四. 多行文本控件 (UITextView)

1. UITextView 簡介

(1) UITextView 繼承結(jié)構(gòu)

    UITextView 繼承結(jié)構(gòu)簡介:

    --基類: 繼承了 UIScrollView : UIView 控件, 默認(rèn)這些控件都自帶滾動(dòng)條;

(2) UITextView 屬性類別

    UITextView 屬性類別:

    --TextView 屬性: UITextView 父類的屬性;

   

    --ScrollView 屬性: UIScrollView 父類的屬性;

   

(3) UITextView 與 UITextField 區(qū)別

    UITextView 與 UITextField 區(qū)別:

    --單行與多行: UITextView 是多行文本, UITextField 是單行文本;

    --不能觸發(fā)事件: UITextView 沒有繼承 UIControl 控件, 不能綁定 IBAction 事件處理方法;

    --可滾動(dòng): UITextView 繼承了 UIScrollView, 有 UIScrollView 的各種功能特性;

2. UIScrollView 屬性簡介

(1) UIScrollView 簡介

    UIScrollView 簡介:

    --顯示內(nèi)容多: 可滾動(dòng)控件, 可以使用手指拖動(dòng)控件中的內(nèi)容, 在其中可以顯示多個(gè)屏幕的內(nèi)容;

(2) UIScrollView 顯示區(qū)域?qū)傩?/h3>

    UIScrollView 顯示區(qū)域?qū)傩?/strong>:

    --contentSize: 屬性是一個(gè) CGSize 類型值, CGSize 是結(jié)構(gòu)體, 包含 width, height 兩個(gè)成員變量, 代表完整內(nèi)容的寬度和高度;

    --contentInset: 屬性值是一個(gè) UIEdgeInset 類型值, UIEdgeInset 是結(jié)構(gòu)體, 包含 top, left, bottom, right 四個(gè)成員變量, 顯示內(nèi)容 上下左右 的空白;

    --contentOffset: 屬性值是一個(gè) CGPoint 類型值, CGPoint 是結(jié)構(gòu)體, 包含 x, y 兩個(gè)變量, 代表 UIScrollView 的可視區(qū)域顯示內(nèi)容上滾動(dòng)距離;

(3) Scroll Indicators 屬性

    Scroll Indicators 屬性:

   

    --Shows Horizontal Indicator: 水平滾動(dòng) Scroll View 時(shí), 顯示水平滾動(dòng)條;

    --Shows Vertical Indicator: 垂直滾動(dòng) ScrollView 時(shí), 顯示垂直滾動(dòng)條;

(4) Bounce 屬性

    Bounce 屬性:

   

    --Bounces: 選中后, 該 UITextView 控件有彈性, 拖動(dòng)控件內(nèi)容有彈回效果, 沒有勾選時(shí)拖到邊界僵硬的停止;

    --Bounce Horizontally: 水平方向有彈性;

    --Bounce Vertically: 垂直方向有彈性;

(5) Zoom 屬性

    Zoom 屬性:

   

    --Min: UIScrollView 的最小縮放比例;

    --Max: UIScrollView 的最大縮放比例;

(6) Touch 屬性

    Touch 屬性:

   

    --Bounces Zoom: UIScrollView 對內(nèi)容縮放時(shí)有彈性, 縮小放大時(shí)比例超過控件的 minimumZoomScale 或 maximumZoomScale 縮放限制, 迅速彈回;

    --Delays Content Touches: 手勢完成后才能滾動(dòng) UIScrollView 控件, 如果沒有勾選, 用戶碰觸該控件立即調(diào)用 touchesShouldBegin 方法處理滾動(dòng);

    --Cancellabel Content Touches: 勾選后, 如果拖動(dòng)手指不能啟動(dòng)一個(gè)滾動(dòng)事件, 會(huì)調(diào)用 touchesCancelled 方法, 建議勾選;

3. UITextView 常用方法簡介

(1) UITextView 簡介

    UITextView 繼承結(jié)構(gòu): UITextView 繼承了 UIScrollView, 沒有繼承 UIControl, 因此該控件沒有 Touch Up Inside 等綁定事件;

    --下面是 UITextView 的控件拖動(dòng)內(nèi)容設(shè)置:

   

(2) UITextView 委托方法簡介

    UITextView 委托方法簡介:

    --委托方式: UITextView 將事件交給委托對象處理, 其委托對象實(shí)現(xiàn)了 UITextViewDelegate 協(xié)議, 下面介紹該協(xié)議的各種方法;

    --- textViewShouldBeginEditing : 方法: 用戶將要開始編輯 UITextView 內(nèi)容時(shí)激發(fā)該方法;

    --- textViewDidBeginEditing : 方法: 用戶開始編輯 UITextView 內(nèi)容后 激發(fā)該方法;

    --- textViewShouldEndEditing : 方法: 將要結(jié)束編輯 UITextView 控件時(shí)激發(fā)該方法;

    --- textViewDidEndEditing : 方法: 結(jié)束編輯 UITextView 控件后激發(fā)該方法;

    --- textView : shouldChangeTextInRange : replacementText : 方法: UITextView 控件指定范圍的文本內(nèi)容將要被替換時(shí)激發(fā)的方法;

    --- textViewDidChange : 方法: 文本內(nèi)容發(fā)生改變時(shí), 激發(fā)該方法;

    --- textViewDidChangeSelection : 方法: 選中 UITextView 控件內(nèi)文本時(shí)激發(fā)該方法;

4. UITextView 虛擬鍵盤關(guān)閉

(1) 需求分析

    UITextView 與 UITextField 中使用的虛擬鍵盤對比:

    --UITextField 虛擬鍵盤: 右下角的鍵是 Done, 按下這個(gè)鍵可以設(shè)置成關(guān)閉虛擬鍵盤;

   

    --UITextView 虛擬鍵盤: 由于 UITextView 是多行文本, 右下角的鍵是 return, 這個(gè)鍵是 回車鍵, 如果我們想要將虛擬鍵盤退出需要有其他方法;

   

(2) 點(diǎn)擊背景控件關(guān)閉虛擬鍵盤

    點(diǎn)擊背景控件關(guān)閉虛擬鍵盤:

    --1. 將背景控件設(shè)置為 UIControl: 之前的 UIView 不能響應(yīng)點(diǎn)擊事件, 在身份檢查器 面板將 Custom Class 由 UIView 修改為 UIControl;

   

    --2. 設(shè)置背景控件的點(diǎn)擊方法: 生成對應(yīng)代碼;

   

- (IBAction)cancelTextField:(id)sender;

    --3. 創(chuàng)建 UITextView 的 IBOutlet:

@property (strong, nonatomic) IBOutlet UITextView *textView;

    --4. sender 方法實(shí)現(xiàn):

- (IBAction)cancelTextField:(id)sender {    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}

    源碼示例:

    --界面設(shè)計(jì)文件:

   

    --OCViewController.h:

////  OCViewController.h//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController@property (strong, nonatomic) IBOutlet UITextField *userName;@property (strong, nonatomic) IBOutlet UITextField *pswTextField;@property (strong, nonatomic) IBOutlet UITextView *textView;- (IBAction)userNameInput:(id)sender;- (IBAction)pwdInput:(id)sender;- (IBAction)cancelTextField:(id)sender;@end</uikit>

    --OCViewController.m:

////  OCViewController.m//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad{    [super viewDidLoad];	// Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)userNameInput:(id)sender {    //sender 放棄響應(yīng), 虛擬鍵盤消失    [self.userName resignFirstResponder];}- (IBAction)pwdInput:(id)sender {}- (IBAction)cancelTextField:(id)sender {    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}@end

(3) 導(dǎo)航按鈕關(guān)閉虛擬鍵盤

    導(dǎo)航按鈕關(guān)閉虛擬鍵盤:

    --1. 實(shí)現(xiàn) UITextViewDelegate 協(xié)議:

@interface OCViewController : UIViewController<uitextviewdelegate></uitextviewdelegate>

    --2. 創(chuàng)建 UITextView 的IBOutlet:

@property (strong, nonatomic) IBOutlet UITextView *textView;

    --3. 設(shè)置 UITextView 的協(xié)議委托者:

//設(shè)置 UITextView 的控件委托對象為本類 OCViewController 對象    self.textView.delegate = self;

--4. 實(shí)現(xiàn) UITextViewDelegate 協(xié)議方法:

- (void) textViewDidBeginEditing:(UITextView *)textView{    //開始編輯是顯示導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = done;}- (void) textViewDidEndEditing:(UITextView *)textView{    //結(jié)束編輯是不現(xiàn)實(shí)導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = nil;}

    --5. 創(chuàng)建并初始化導(dǎo)航條:

//創(chuàng)建導(dǎo)航條    UINavigationBar *bar = [[UINavigationBar alloc] initWithFrame.:CGRectMake(0, 20, 320, 44)];    //將導(dǎo)航條添加到 UIView 布局中    [self.view addSubview:bar];    //初始化導(dǎo)航條    self.navItem = [[UINavigationItem alloc] initWithTitle:@導(dǎo)航欄按鈕取消虛擬鍵盤 ];

    --6. 設(shè)置按鈕內(nèi)容:

//向?qū)Ш綏l中加入按鈕    bar.items = [NSArray arrayWithObjects:self.navItem, nil];    //創(chuàng)建導(dǎo)航條中的按鈕    done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(finish)];

    源碼示例:

    --界面設(shè)計(jì)文件:

   

    --OCViewController.h:

////  OCViewController.h//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController<uitextviewdelegate>@property (strong, nonatomic) IBOutlet UITextField *userName;@property (strong, nonatomic) IBOutlet UITextField *pswTextField;@property (strong, nonatomic) IBOutlet UITextView *textView;- (IBAction)userNameInput:(id)sender;- (IBAction)pwdInput:(id)sender;- (IBAction)cancelTextField:(id)sender;@end</uitextviewdelegate></uikit>

    --OCViewController.m:

////  OCViewController.m//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@property (nonatomic, strong) UINavigationItem * navItem;@end@implementation OCViewControllerUIBarButtonItem * done;- (void)viewDidLoad{    [super viewDidLoad];    //設(shè)置 UITextView 的控件委托對象為本類 OCViewController 對象    self.textView.delegate = self;        //創(chuàng)建導(dǎo)航條    UINavigationBar *bar = [[UINavigationBar alloc] initWithFrame.:CGRectMake(0, 20, 320, 44)];    //將導(dǎo)航條添加到 UIView 布局中    [self.view addSubview:bar];    //初始化導(dǎo)航條    self.navItem = [[UINavigationItem alloc] initWithTitle:@導(dǎo)航欄按鈕取消虛擬鍵盤 ];        //向?qū)Ш綏l中加入按鈕    bar.items = [NSArray arrayWithObjects:self.navItem, nil];    //創(chuàng)建導(dǎo)航條中的按鈕    done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(finish)];        }- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)userNameInput:(id)sender {    //sender 放棄響應(yīng), 虛擬鍵盤消失    [self.userName resignFirstResponder];}- (IBAction)pwdInput:(id)sender {}- (IBAction)cancelTextField:(id)sender {    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}- (void) textViewDidBeginEditing:(UITextView *)textView{    //開始編輯是顯示導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = done;}- (void) textViewDidEndEditing:(UITextView *)textView{    //結(jié)束編輯是不現(xiàn)實(shí)導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = nil;}- (void) finish{    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}@end

    --展示效果: 點(diǎn)擊 Done 即可關(guān)閉按鈕;

   

(4) 自定義鍵盤附件關(guān)閉虛擬鍵盤

    自定義鍵盤附件:

    --作用: 不是所有的應(yīng)用都有導(dǎo)航欄, 在沒有導(dǎo)航欄的應(yīng)用中, 需要有鍵盤附件來關(guān)閉鍵盤;

    --1. 創(chuàng)建工具條并設(shè)置風(fēng)格:

//創(chuàng)建 ToolBar 工具條    UIToolbar * toolBar = [[UIToolbar alloc] initWithFrame.:CGRectMake(0, 0, 320, 30)];    //設(shè)置工具條風(fēng)格    [toolBar setBarStyle.:UIBarStyleDefault];

    --2. 創(chuàng)建按鈕:

//創(chuàng)建第一個(gè)按鈕    UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc] initWithTitle:@鍵盤附件 style.:UIBarButtonItemStyleBordered target:self action:nil];

    --3. 將按鈕設(shè)置到工具條中:

//將按鈕放在集合中    NSArray * buttonArray = [NSArray arrayWithObjects:buttonItem, spaceItem, doneItem, nil];    //為工具條設(shè)置按鈕    [toolBar setItems:buttonArray];

    --4. 將工具條設(shè)置成 虛擬鍵盤 附件:

//將工具條關(guān)聯(lián)到 UITextView, 作為虛擬鍵盤附件    [self.textView setInputAccessoryView:toolBar];

    源碼工程實(shí)例:

    --界面設(shè)計(jì)文件:

   

    --OCViewController.h:

////  OCViewController.h//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController<uitextviewdelegate>@property (strong, nonatomic) IBOutlet UITextField *userName;@property (strong, nonatomic) IBOutlet UITextField *pswTextField;@property (strong, nonatomic) IBOutlet UITextView *textView;- (IBAction)userNameInput:(id)sender;- (IBAction)pwdInput:(id)sender;- (IBAction)cancelTextField:(id)sender;@end</uitextviewdelegate></uikit>

    --OCViewController.m:

////  OCViewController.m//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@property (nonatomic, strong) UINavigationItem * navItem;@end@implementation OCViewControllerUIBarButtonItem * done;- (void)viewDidLoad{    [super viewDidLoad];    //設(shè)置 UITextView 的控件委托對象為本類 OCViewController 對象    self.textView.delegate = self;        //創(chuàng)建導(dǎo)航條    UINavigationBar *bar = [[UINavigationBar alloc] initWithFrame.:CGRectMake(0, 20, 320, 44)];    //將導(dǎo)航條添加到 UIView 布局中    [self.view addSubview:bar];    //初始化導(dǎo)航條    self.navItem = [[UINavigationItem alloc] initWithTitle:@導(dǎo)航欄按鈕取消虛擬鍵盤 ];        //向?qū)Ш綏l中加入按鈕    bar.items = [NSArray arrayWithObjects:self.navItem, nil];    //創(chuàng)建導(dǎo)航條中的按鈕    done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(finish)];            /*     * 下面是自定義鍵盤附件的代碼     */        //創(chuàng)建 ToolBar 工具條    UIToolbar * toolBar = [[UIToolbar alloc] initWithFrame.:CGRectMake(0, 0, 320, 30)];    //設(shè)置工具條風(fēng)格    [toolBar setBarStyle.:UIBarStyleDefault];        //創(chuàng)建第一個(gè)按鈕    UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc] initWithTitle:@鍵盤附件 style.:UIBarButtonItemStyleBordered target:self action:nil];    //創(chuàng)建第二個(gè)按鈕    UIBarButtonItem * spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];    //創(chuàng)建第三個(gè)按鈕    UIBarButtonItem * doneItem = [[UIBarButtonItem alloc] initWithTitle:@Done style.:UIBarButtonItemStyleDone target:self action:@selector(finish)];    //將按鈕放在集合中    NSArray * buttonArray = [NSArray arrayWithObjects:buttonItem, spaceItem, doneItem, nil];    //為工具條設(shè)置按鈕    [toolBar setItems:buttonArray];    //將工具條關(guān)聯(lián)到 UITextView, 作為虛擬鍵盤附件    [self.textView setInputAccessoryView:toolBar];        }- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)userNameInput:(id)sender {    //sender 放棄響應(yīng), 虛擬鍵盤消失    [self.userName resignFirstResponder];}- (IBAction)pwdInput:(id)sender {}- (IBAction)cancelTextField:(id)sender {    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}- (void) textViewDidBeginEditing:(UITextView *)textView{    //開始編輯是顯示導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = done;}- (void) textViewDidEndEditing:(UITextView *)textView{    //結(jié)束編輯是不現(xiàn)實(shí)導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = nil;}- (void) finish{    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}@end

    --界面實(shí)例:

   

5. 自定義選擇菜單

(1) 自定義菜單簡介

    自定義菜單:

    --1. 創(chuàng)建菜單選項(xiàng):

//創(chuàng)建菜單項(xiàng)    UIMenuItem * delete = [[UIMenuItem alloc] initWithTitle:@刪除內(nèi)容 action:@selector(deleteContent:)];

    --2. 獲取菜單:

//獲取菜單    UIMenuController * menu = [UIMenuController sharedMenuController];

    --3. 設(shè)置菜單附加按鈕:

//設(shè)置菜單中的附加按鈕    [menu setMenuItems:[NSArray arrayWithObject:delete]];

(2) 源碼示例

    源碼示例:

    --OCViewController.h:

////  OCViewController.h//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController<uitextviewdelegate>@property (strong, nonatomic) IBOutlet UITextField *userName;@property (strong, nonatomic) IBOutlet UITextField *pswTextField;@property (strong, nonatomic) IBOutlet UITextView *textView;- (IBAction)userNameInput:(id)sender;- (IBAction)pwdInput:(id)sender;- (IBAction)cancelTextField:(id)sender;@end</uitextviewdelegate></uikit>

    --OCViewController.m:

////  OCViewController.m//  OC_UITextField////  Created by octopus on 15-12-2.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@property (nonatomic, strong) UINavigationItem * navItem;@end@implementation OCViewControllerUIBarButtonItem * done;- (void)viewDidLoad{    [super viewDidLoad];    //設(shè)置 UITextView 的控件委托對象為本類 OCViewController 對象    self.textView.delegate = self;        //創(chuàng)建導(dǎo)航條    UINavigationBar *bar = [[UINavigationBar alloc] initWithFrame.:CGRectMake(0, 20, 320, 44)];    //將導(dǎo)航條添加到 UIView 布局中    [self.view addSubview:bar];    //初始化導(dǎo)航條    self.navItem = [[UINavigationItem alloc] initWithTitle:@導(dǎo)航欄按鈕取消虛擬鍵盤 ];        //向?qū)Ш綏l中加入按鈕    bar.items = [NSArray arrayWithObjects:self.navItem, nil];    //創(chuàng)建導(dǎo)航條中的按鈕    done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(finish)];            /*     * 下面是自定義鍵盤附件的代碼     */        //創(chuàng)建 ToolBar 工具條    UIToolbar * toolBar = [[UIToolbar alloc] initWithFrame.:CGRectMake(0, 0, 320, 30)];    //設(shè)置工具條風(fēng)格    [toolBar setBarStyle.:UIBarStyleDefault];        //創(chuàng)建第一個(gè)按鈕    UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc] initWithTitle:@鍵盤附件 style.:UIBarButtonItemStyleBordered target:self action:nil];    //創(chuàng)建第二個(gè)按鈕    UIBarButtonItem * spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];    //創(chuàng)建第三個(gè)按鈕    UIBarButtonItem * doneItem = [[UIBarButtonItem alloc] initWithTitle:@Done style.:UIBarButtonItemStyleDone target:self action:@selector(finish)];    //將按鈕放在集合中    NSArray * buttonArray = [NSArray arrayWithObjects:buttonItem, spaceItem, doneItem, nil];    //為工具條設(shè)置按鈕    [toolBar setItems:buttonArray];    //將工具條關(guān)聯(lián)到 UITextView, 作為虛擬鍵盤附件    [self.textView setInputAccessoryView:toolBar];            /*     * 下面是自定義選中菜單代碼     */        //創(chuàng)建菜單項(xiàng)    UIMenuItem * delete = [[UIMenuItem alloc] initWithTitle:@刪除內(nèi)容 action:@selector(deleteContent:)];    //獲取菜單    UIMenuController * menu = [UIMenuController sharedMenuController];    //設(shè)置菜單中的附加按鈕    [menu setMenuItems:[NSArray arrayWithObject:delete]];        }- (BOOL) canPerformAction:(SEL)action withSender:(id)sender{    if(action == @selector(deleteContent:)){        if(self.textView.selectedRange.length > 0){            return YES;        }    }    return NO;}- (void) deleteContent : (id) sender{    NSLog(@刪除按鈕被點(diǎn)擊, 刪除操作);}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)userNameInput:(id)sender {    //sender 放棄響應(yīng), 虛擬鍵盤消失    [self.userName resignFirstResponder];}- (IBAction)pwdInput:(id)sender {}- (IBAction)cancelTextField:(id)sender {    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}- (void) textViewDidBeginEditing:(UITextView *)textView{    //開始編輯是顯示導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = done;}- (void) textViewDidEndEditing:(UITextView *)textView{    //結(jié)束編輯是不現(xiàn)實(shí)導(dǎo)航條按鈕    self.navItem.rightBarButtonItem = nil;}- (void) finish{    [self.userName resignFirstResponder];    [self.pswTextField resignFirstResponder];    [self.textView resignFirstResponder];}@end

    --界面示例:

   

五. 開關(guān)按鈕 (UISwitch)

1. UISwitch 示例

    UISwitch 屬性:

   

    --創(chuàng)建 UISwitch 的 IBAction:

   

    --OCViewController.h:

////  OCViewController.h//  UISwitchButton////  Created by octopus on 15-12-3.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import<uikit uikit.h="">@interface OCViewController : UIViewController- (IBAction)valueChange:(id)sender;@end</uikit>

    --OCViewController.m:

////  OCViewController.m//  UISwitchButton////  Created by octopus on 15-12-3.//  Copyright (c) 2015年 www.octopus.org.cn. All rights reserved.//#import OCViewController.h@interface OCViewController ()@end@implementation OCViewController- (void)viewDidLoad{    [super viewDidLoad];}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];}- (IBAction)valueChange:(id)sender {    if([sender isOn] == YES){        self.view.backgroundColor = [UIColor whiteColor];    }else{        self.view.backgroundColor = [UIColor blackColor];    }}@end

    --界面示例 關(guān)閉:

   

    --界面示例 打開:

   

最新文章