iPhone開發入門(9)--- 實際開發中的應用技巧

來源:互聯網
上載者:User

添加Action和Outlet

截至到現在,我們已經會在 Interface Builder 中用 File's Owner 添加 Action 和 Outlet , 以及由 Write Class Files產生應用程式檔案了。但是,如果在途中添加 Action 或者 Outlet 的時候,原先的 Action 會被覆蓋掉,我們不得不重新再用 File's Owner 產生一遍。

這裡,我們來看看左右不使用 Interface Builder,添加 Action 和 Outlet 的方法。

測試專案

我們先來建立一個測試用的項目 UITest,其中利用 File's Owner 添加一個 Action 和一個 Outlet。

 

利用File's Owner產生Action和Outlet

File's Owner 被選擇的狀態下點擊 Interface Builder 的菜單的「Write Class Files...」,選擇 Replace 產生程式檔案。

添加Outlet

Outlet 被定義在 ViewController 的標頭檔中。下面是模板項目的 UITestViewController.h 檔案。

 

UITestViewController.h檔案中的Outlet與Action定義

我們可以看到檔案中Outlet和Action的定義。與其類似,在定義Outlet1的下面,我們再添加兩個Outlet。

 

添加Outlet

檔案儲存之後,我們可以通過 File's Owner 來確認是否添加成功:

 

確認添加的Outlet

添加Action

同樣的方法,我們在 UITestViewController.h 中添加兩個 Action。分別是myAction2,myAction3。

 

添加Action

儲存之後用 Interface Builder 的 File's Owner 確認。

 

確認添加的Action

除此之外,Action需要在 UITestViewController.m 中定義其實現。

 

Action的實現

iPhone鍵盤

iPhone的鍵盤佔去了整個螢幕的一半,所以基本上都是將 TextField 控制項放置到畫面的上半部。如果需要在畫面下方輸入文字,需要另外產生一個View,其上半部是 TextField 控制項。當點擊下半部的控制項時,彈出該View。

 

iPhone鍵盤

關閉鍵盤的方法

鍵盤關閉通過 「Did End On Exit」 Action。將其與 Text Field 控制項關聯。

 

與“Did End On Exit”關聯

並且設定鍵盤右下角的按鍵為關閉按鈕。該按鈕預設是「return」或者是換行,這裡我們通過設定 Text Field 控制項的Attributes,將「Return Key」設定為「Done」,表示按下該按鈕啟用上面的「Did End On Exit」 Action

 

設定Return Key

 

啟用「Did End On Exit」 Action

關閉鍵盤的按鈕

上面使用的鍵盤中可以設定退出的按鈕,可是在「Number Pad」或者「Phone Pad」中,右下角不存在這樣一個按鈕。如:

 

Number Pad

這種情況下我們需要自訂一個按鈕,用來關閉鍵盤。如所示,這裡在Text Field控制項「右下角配置一個按鈕,並與「Touch Down 」Action關聯。

 

如果想結束輸入鍵盤的輸入,使用與 Text Field 關聯的 Outlet 來執行以下的操作。

[outlet endEditing:YES];
 

關聯按鈕與鍵盤

上面添加的按鈕只是在鍵盤出現的時候有效,所以我們試著將其與鍵盤關聯。只有在鍵盤出現的時候才出現,否則不顯示。為了控制按鈕,我們需要產生按鈕的 Outlet,通過它來控制按鈕的顯示和隱藏。

當開始在 Text Field 控制項上輸入文字的時候,該按鈕有效。這時 Text Field 控制項的 Action 是「Editing Did Begin」,我們在其中將按鈕顯示出來(按鈕的Outlet變數為button_outlet)。

 

[button_outlet setHidden:NO];

接下來,按鍵按下的Action中追加按鈕隱藏的操作。

[button_outlet setHidden:YES];另外,程式啟動後,按鈕預設的狀態也應該是隱藏的狀態。在 inspector 選擇按鈕的「Drawing」屬性為「Hidden」。
透明按鈕

這裡在介紹一種透明按鈕的方法。通過點擊 Text Field 控制項以外領域來關閉鍵盤。這在沒有位置用來設定按鈕時挺方便。其設定也非常簡單,在 inspector 選擇按鈕的「Type」屬性為「Custom」,這樣一來,就可以設定透明的按鈕。

設定按鈕

選擇了 Custom,變成透明的按鈕會覆蓋View的上半部。

通過以上設定,就可以使用透明的按鈕了。但是有一點需要留意,設定了這樣的按鈕以後會覆蓋掉其領域下的其他控制項,就不能觸發其他控制項的訊息了。所以需要將透明控制項的顯示順序至於最低層。像下面選擇按鈕後,選擇Interface Builder菜單的「Layout」→「Send Backward」後就可以了。

設定按鈕階層

確認對話方塊

當需要使用者確認操作的時候,需要彈出確認對話方塊。這裡使用 UIActionSheet。首先使用 UIActionSheet 的代理,利用Objective-C 的 protocol 在 UIViewController 中處理。

@interface UITestViewController : UIViewController <UIActionSheetDelegate> {
 顯示對話方塊

在 UITestViewController.m 檔案的 myAction1 中實現對話方塊顯示。\

 

 

 (IBAction)myAction1:(id)sender
{
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"select" delegate:self cancelButtonTitle:@"CANCEL" destructiveButtonTitle:@"OK" otherButtonTitles:nil];
    [actionSheet showInView:self.view];
    [actionSheet release];
}

 

使用者操作

具體按鈕按下的時候,利用UIActionSheet的介面實現。

 

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {    if(buttonIndex == 0){        // destructiveButton被按下    }}資料儲存

Text Field 控制項中輸入的資料等應用程式一結束就會自動消失。如果下一次啟動還想恢複的話怎麼辦呢?這裡可以使用類似於Windows的註冊表一類的方法。(這裡只限於設定很少量的資料,對於大的資料建議使用資料庫SQLite或Bento)

[[NSUserDefaults standardUserDefaults] setObject:myObj forKey:@"myKey"];
 
儲存

myObj是被儲存的資料,myKey是以任一字元串。

[[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"];
 
提取

myKey指定的資料被取出,放到myObj中。

作者:易飛揚

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.