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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iPhone应用程序编程指南(文本和Web)

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iPhone应用程序编程指南(文本和Web) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于文本和Web的支持

文本視圖

UIKit框架提供三個顯示文本內容的基本類:

  • UILabel?顯示靜態文本字符串

  • UITextField?顯示單行可編輯文本

  • UITextView?顯示多行可編輯文本

雖然標簽和文本編輯框通常用于顯示相對少量的文本,但實際上這些類可以顯示任意數量的文本。

在使用可編輯的文本視圖時,您必須提供一個委托對象,負責管理編輯會話。文本視圖會向委托對象發送幾個不同的通告,讓它知道編輯何時開始,何時結束,并使它有機會重載某些編輯動作。

Web視圖

除了顯示內容,您還可以用web視圖對象來顯示web表單,收集用戶輸入。和UIKit的其它文本類相似,如果您在web頁面的表單中有可編輯的文本框,則輕觸該文本框就會彈出鍵盤,用戶可以通過鍵盤輸入文本。這是web瀏覽整體體驗的一部分,web視圖會自行管理鍵盤的顯示和消除。

web視圖通過其關聯的委托對象提供有關網頁何時被裝載、及裝載過程是否發生錯誤的信息。web委托是指實現一個或多個UIWebViewDelegate協議方法的對象。您可以通過實現委托方法來響應裝載錯誤或處理一些與裝載有關的其它任務。

鍵盤和輸入法

每當用戶觸擊一個可以接受文本輸入的對象時,該對象就會請求系統顯示一個合適的鍵盤。根據用戶程序的需要和偏好的語言,系統可以顯示幾種不同的鍵盤。您的應用程序雖然不能控制用戶的偏好語言(因此也不能控制鍵盤的輸入法),但可以控制鍵盤的使用屬性,比如特殊鍵的配置及其行為。

您可以直接通過應用程序中的文本對象來配置鍵盤的屬性。UITextField和UITextView類都遵循UITextInputTraits協議,該協議定義了一些配置鍵盤的屬性。在程序或Interface Builder的查看器窗口中設置這些屬性就可以使系統顯示指定類型的鍵盤。

請注意:雖然UIWebView類并不直接支持UITextInputTraits協議,但您還是可以配置文本輸入元素的一些鍵盤屬性。特別值得一提的是,您可以在輸入元素的定義中包含autocorrect和autocapitalization屬性,通過這些屬性來指定鍵盤的行為,如下面的例子所示:

<input type="text" size="30" autocorrect="off" autocapitalization="on">
您不能在輸入元素中指定鍵盤的類型。web視圖顯示的是缺省的鍵盤,但包含一些額外的控制,可以進行表單元素之間漫游。

?

管理鍵盤

接收鍵盤通告

當鍵盤被顯示或隱藏的時候,iPhone OS會向所有經過注冊的觀察者對象發出如下通告

  • UIKeyboardWillShowNotification

  • UIKeyboardDidShowNotification

  • UIKeyboardWillHideNotification

  • UIKeyboardDidHideNotification

當鍵盤首次出現或者消失,以及鍵盤的所有者或應用程序的方向發生變化的任何時候,系統都會發出鍵盤通告。

在上述的各種情況下,系統只發送與具體場景相關的的消息集合。舉例來說,如果鍵盤的所有者發生變化,系統只向當前的擁有者發送UIKeyboardWillHideNotification消息,但不發送UIKeyboardDidHideNotification消息,因為這個變化不會導致鍵盤最終被隱藏。UIKeyboardWillHideNotification消息只是簡單地通知鍵盤當前的所有者即將失去鍵盤焦點。而改變鍵盤的方向則會使系統發出上述的兩種消息,因為每個方向的鍵盤是不同的,在顯示新的鍵盤之前,必須先隱藏原來的鍵盤。

每個鍵盤通告都包含鍵盤在屏幕上的位置和尺寸。您應該使用通告中的信息來確定鍵盤的尺寸和位置,而不是假定鍵盤具有某個特定的尺寸或處于某個特定的位置。

圖5-5??在肖像模式和景觀模式下的相對鍵盤尺寸

請注意:info字典中的UIKeyboardBoundsUserInfoKey鍵包含的矩形只能用于取得尺寸信息,不要將該矩形的原點(它的值總是為{0.0, 0.0})用于矩形計算。由于鍵盤是以動畫的形式出現在它的位置上的,其實際的邊界尺寸會隨著時間的不同而不同,因此,info字典中有UIKeyboardCenterBeginUserInfoKey和UIKeyboardCenterEndUserInfoKey兩個鍵,用于保存鍵盤的起始和終止的位置,您可以根據這些位置計算出鍵盤的原點。

使用鍵盤通告的一個原因是為了重新定位被鍵盤遮掩的內容。

顯示鍵盤

當用戶觸擊一個視圖時,系統就會自動將該視圖作為第一響應者。而當這種場景發生在包含可編輯文本的視圖時,該視圖就會啟動一個文本編輯會話。如果當前鍵盤不可見,該視圖會在編輯會話剛開始時請求系統顯示鍵盤。如果鍵盤已經顯示在屏幕上了,第一響應者的改變會導致來自鍵盤的文本輸入被重定向到用戶剛剛觸擊的視圖上。

鍵盤是在視圖變為第一響應者時自動被顯示的,因此,您通常不需要為了顯示它而做什么工作。但是,您可以通過調用視圖對象的becomeFirstResponder方法來為可編輯的文本視圖顯示鍵盤。調用這個方法可以使目標視圖成為第一響應者,并開始編輯過程,其效果和用戶觸擊該視圖是一樣的。

如果您的應用程序在一個屏幕上管理幾個基于文本的視圖,則需要跟蹤當前哪個視圖是第一響應者,以便在需要的時候取消鍵盤的顯示。

取消鍵盤

雖然鍵盤通常是自動顯示的,但它并不自動取消。相反,您的應用程序需要在恰當的時機取消鍵盤。通常情況下,您在響應用戶動作的時候進行這樣的操作,比如當用戶觸擊鍵盤上的Return或Done按鍵、或者觸擊應用程序界面上的其它按鍵時。根據鍵盤配置的不同,您可能需要在用戶界面上加入額外的控件來取消鍵盤。

您可以調用作為當前第一響應者的文本視圖的resignFirstResponder方法來取消鍵盤。當文本視圖失去第一響應者的狀態時,就會結束其當前的編輯會話,將這個變化通知它的委托對象,并取消鍵盤。

移動鍵盤下面的內容

需要做的調整通常包括暫時調整一或多個視圖的尺寸和位置,從而使文本對象可見。管理帶有鍵盤的文本對象的最簡單方法是將它們嵌入到一個UIScrollView(或其子類,如UITableView)對象。當鍵盤被顯示出來時,您需要做的只是調整滾動視圖的尺寸,并將目標文本對象滾動到合適的位置。為此,在UIKeyboardDidShowNotification通告的處理代碼中需要進行如下操作:

  • 取得鍵盤的尺寸。

  • 將滾動視圖的高度減去鍵盤的高度。

  • 將目標文本框滾動到視圖中。

  • 圖5-6演示了一個簡單的應用程序如何處理上述的幾個步驟。

    該程序將幾個文本輸入框嵌入到UIScrollView對象中,當鍵盤出現時,通告處理代碼首先調整滾動視圖的尺寸,然后用UIScrollView類的scrollRectToVisible:animated:方法將被觸擊的文本框滾動到視圖中。

    圖5-6??調整內容的位置,使其適應鍵盤

    請注意:在配置滾動視圖時,請務必為所有的內容視圖配置恰當的自動尺寸調整規則。在之前的圖中,文本框實際上是一個UIView對象的子視圖,該UIView對象又是UIScrollView對象的子視圖。如果該UIView對象的UIViewAutoresizingFlexibleWidth和UIViewAutoresizingFlexibleHeight選項被設置了,則改變滾動視圖的邊框尺寸會同時改變它的邊框,因而可能導致不可預料的結果。禁用這些選項可以確保該視圖保持尺寸不變,并正確滾動。

    描畫文本

    除了顯示和編輯文本的UIKit類之外,iPhone OS還包含幾個直接在屏幕上描畫文本的方法。描畫簡單字符串的最簡單有效的方法是使用NSString類的UIKit擴展,該擴展包含一些在屏幕上描畫字符串的方法,并且可以描畫時使用多種屬性。還有一些方法,可以在真正描畫之前計算渲染字符串所需要的尺寸,這些方法有助于更加精確布局應用程序的內容。

    重要提示:由于性能上的考慮,您應該盡可能避免直接描畫文本。對于靜態文本,通過一或多個UILabel對象進行描畫比使用定制描畫例程要高效得多。類似地,UITextField類也支持不同的風格,這些風格使您更加易于將可編輯的文本區域集成到您的內容中。

    ?

    當您需要在界面上描畫定制文本字符串時,請使用NSString方法。UIKit包含一些對基本NSString類的擴展,用于在視圖中描畫字符串。這些方法使您可以精確調整文本的位置,以及將文本和視圖內容進行融合;這個類的方法還可以根據指定的字體和風格屬性計算文本的包圍矩形。更多信息請參見NSString UIKit擴展參考。

    如果您需要對描畫過程中用到的字體有更多的控制,還可以使用Core Graphics框架中的函數來進行描畫。Core Graphics框架提供的方法可以對字形和文本進行精確描畫和定位。有關這些函數及其用法的更多信息,請參見Quartz 2D編程指南和Core Graphics框架參考。

    在Web視圖中顯示內容

    對于本地的內容,您可以動態創建,也可以使用文件,然后調用loadData:MIMEType:textEncodingName:baseURL:或loadHTMLString:baseURL:方法;

    如果要從網絡加載,則需要創建一個NSURLRequest對象,然后傳遞給web視圖對象的loadRequest:方法。

    在發起一個基于網絡的請求后,如果由于某種原因必須釋放web視圖,則必須在釋放之前取消待處理的請求。為此,您可以調用web視圖的stopLoading方法。通常情況下,您可以在web視圖的視圖控制器的viewWillDisappear:方法中執行這些代碼。如果需要確定一個請求是否處于等待狀態,可以通過web視圖的loading屬性來判斷。

    轉載于:https://www.cnblogs.com/Piosa/archive/2012/02/14/2350260.html

    總結

    以上是生活随笔為你收集整理的iPhone应用程序编程指南(文本和Web)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。