《電子技術應用》
您所在的位置:首頁 > 顯示光電 > 設計應用 > iPhone wap瀏覽器之界面架構篇
iPhone wap瀏覽器之界面架構篇
摘要: 本篇里筆者重點講述如果搭建一個可擴展的、健壯的界面架構。
Abstract:
Key words :

  在筆者的上篇文章《自己動手寫iPhone wap瀏覽器之BSD Socket引擎篇》中已經成功解析出來了wml頁面中的tag,如果讀者仔細的話可能會看到里面中文的tag顯示為亂碼,這是因為在iPhone上默認的中文編碼格式是UTF-8,而通過BSD Socket請求過來的是ASCII碼,所以需要通過轉換為UTF-8格式,如下:

  [[NSString alloc] initWithBytes:aChild-》Value() length:strlen(aChild-》Value()) encoding:NSUTF8StringEncoding]

  經過轉換編碼之后,在屏幕上顯示的打印內容如下:

  parse xml succeed

  aChild value = STATUS OK

  aChild value = card

  TiXmlNode::ELEMENT name = title, attr value = 百度一下,你就知道

  aChild value = p

  aChild value = img

  TiXmlNode::ELEMENT name = src, attr value = /r/wise/wapsearchindex/logoindexsmall.gif

  TiXmlNode::ELEMENT name = alt, attr value = 百度首頁

  aChild value = br

  aChild value = input

  TiXmlNode::ELEMENT name = name, attr value = word

  TiXmlNode::ELEMENT name = emptyok, attr value = true

  aChild value = br

  aChild value = anchor

  aChild value = 搜網頁

  TiXmlNode::TEXT Value = 搜網頁

  接下來的任務就是渲染這些解析出來的tag并顯示在界面上了,本篇里筆者重點講述如果搭建一個可擴展的、健壯的界面架構

  在所有平臺的界面架構中,筆者一直推崇MVC,MVC的著重點在于把界面顯示和數據處理分離開來以提供可擴展的界面架構平臺。基于這個思想,筆者建立了如下的架構圖:

  

  圖1.Tag界面架構圖

  在筆者的上篇文章《自己動手寫iPhone wap瀏覽器之BSD Socket引擎篇》中已經成功解析出來了wml頁面中的tag,如果讀者仔細的話可能會看到里面中文的tag顯示為亂碼,這是因為在iPhone上默認的中文編碼格式是UTF-8,而通過BSD Socket請求過來的是ASCII碼,所以需要通過轉換為UTF-8格式,如下:

  [[NSString alloc] initWithBytes:aChild-》Value() length:strlen(aChild-》Value()) encoding:NSUTF8StringEncoding]

  經過轉換編碼之后,在屏幕上顯示的打印內容如下:

  parse xml succeed

  aChild value = STATUS OK

  aChild value = card

  TiXmlNode::ELEMENT name = title, attr value = 百度一下,你就知道

  aChild value = p

  aChild value = img

  TiXmlNode::ELEMENT name = src, attr value = /r/wise/wapsearchindex/logoindexsmall.gif

  TiXmlNode::ELEMENT name = alt, attr value = 百度首頁

  aChild value = br

  aChild value = input

  TiXmlNode::ELEMENT name = name, attr value = word

  TiXmlNode::ELEMENT name = emptyok, attr value = true

  aChild value = br

  aChild value = anchor

  aChild value = 搜網頁

  TiXmlNode::TEXT Value = 搜網頁

  接下來的任務就是渲染這些解析出來的tag并顯示在界面上了,本篇里筆者重點講述如果搭建一個可擴展的、健壯的界面架構。

  在所有平臺的界面架構中,筆者一直推崇MVC,MVC的著重點在于把界面顯示和數據處理分離開來以提供可擴展的界面架構平臺。基于這個思想,筆者建立了如下的架構圖:

  

  圖1.Tag界面架構圖

  在Xml模塊處理完xml數據并提取出tag后,交給CXmlControl進行處理,CXmlControl在這里充當Control的角色,它負責在處理完tag(標簽)后生成相應的消息以顯示在界面上。

  其中CXmlControl繼承自UIView類,它負責顯示界面并響應用戶的按鍵消息,而具體的邏輯處理則是在CXmlControlImpl類中進行的,CXmlControlImpl這個類負責管理生成的tag(標簽)以及tag(標簽)的界面Layout(布局),如下:

  @class CXmlControlImpl;

  @interface CXmlControl : UIView {

  @public

  CXmlControlImpl* iImpl;

  }

  -(void) addElements:(CXmlElementImpl*)iElemntAdded;

  -(CXmlElement*) InsertContent:(CXmlElement*)aTarget aPosition:(NSInteger)aPosition aSource:(const NSString*)aSource aFlags:(NSInteger)aFlags;

  -(CXmlElement*) AppendContent:(const NSString*)aSource aFlags:(NSInteger)aFlags;

  -(void) Refresh;

  -(void) RefreshAndDraw;

  -(void) ClearContent;

  -(void) RemoveElement:(CXmlElement*)aElement;

  -(CXmlElement*) Element:(const NSString*)aId aIndex:(NSInteger)aIndex;

  -(CXmlElement*) ElementByTag:(const NSString*)aTagName aIndex:(NSInteger)aIndex;

  -(CXmlElement*) FocusedElement;

  -(void) SetFocusTo:(CXmlElement*)aElement;

  -(void) ScrollToView:(CXmlElement*)aElement;

  -(CXmlElement*) Body;

  -(void) SetEventObserver:(id《MXmlCtlEventObserver》)aObserver;

  -(CXmlElementImpl*) Impl;

  -(CGContextRef) SystemGc;

  -(void) Draw:(const CGRect)aRect;

  -(CWritableBitmap*) OffScreenBitmap;

  -(void) SetOffScreenBitmap:(CWritableBitmap*)aBitmap;

  -(void) DrawOffscreen;

  -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

  -(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

  -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

  @end

  Tag(標簽)類的基類為CXmlElement,它抽象了標簽的基本屬性和操作,在每一個派生自此基類的tag(標簽)類如CXmlTextElement、CXmlImgElement中都維護一個全局的布局類CHcMeasureStatus,每一個tag(標簽)類都負責自己的布局和自己的繪制操作,完成布局操作和繪制操作后為改變CHcMearuseStatus的狀態和屬性并傳遞給CXmlControl類。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜视频在线观看一区二区| 亚洲国产视频直播| 欧美一区二区日韩一区二区| 亚洲第一中文字幕| 中文在线资源观看网站视频免费不卡| 黑人操亚洲美女惩罚| 欧美日一区二区在线观看 | 久久精品国产清自在天天线| 亚洲伦理网站| 极品少妇一区二区三区精品视频| 国产精品丝袜久久久久久app| 欧美成人一区二区三区在线观看| 久久精品国产第一区二区三区最新章节 | 久久久久久久波多野高潮日日| 亚洲伦理网站| 久久精品理论片| 亚洲欧美日韩精品久久| 在线视频精品一区| 亚洲精品国精品久久99热| 国产综合色在线| 国产日韩精品入口| 欧美色图天堂网| 欧美激情精品久久久久久黑人 | 欧美久久一级| 久热re这里精品视频在线6| 欧美亚洲系列| 亚洲一区二区影院| 亚洲午夜国产成人av电影男同| 日韩视频中文字幕| 日韩午夜高潮| 夜夜精品视频一区二区| 99综合在线| 亚洲美女精品一区| 亚洲日本欧美在线| 亚洲激情视频| 亚洲精品在线免费| 亚洲精品国产精品久久清纯直播| 亚洲经典一区| 亚洲精品视频二区| 日韩视频在线免费| 一区二区三区日韩精品| 亚洲最新色图| 一区二区三区高清在线| 中文久久精品| 亚洲午夜av| 亚洲欧美日韩在线高清直播| 亚洲免费人成在线视频观看| 亚洲免费视频一区二区| 午夜一区二区三视频在线观看 | 亚洲欧美成人一区二区三区| 亚洲欧美日韩国产中文| 亚洲综合三区| 欧美中文字幕精品| 久久久久久久一区二区三区| 久久久久久欧美| 久久亚洲综合色一区二区三区| 蜜臀久久99精品久久久久久9 | 欧美一级视频精品观看| 欧美中文字幕在线| 久久综合九色| 欧美国产精品v| 欧美日韩精品在线| 国产精品久久久久久久久久尿| 国产麻豆精品在线观看| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲高清在线观看| 一区二区三区 在线观看视| 亚洲欧美日韩国产综合| 亚洲二区视频| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久国产天堂福利天堂| 日韩视频一区二区| 亚洲欧美日韩久久精品| 久久久久久久国产| 欧美日韩dvd在线观看| 国产精品日韩欧美一区二区三区| 国产综合久久久久久鬼色| 亚洲人成网站色ww在线| 亚洲深爱激情| 亚洲电影第1页| 99视频一区二区三区| 欧美一区二区日韩一区二区| 麻豆av一区二区三区久久| 欧美日韩在线看| 狠狠干狠狠久久| 夜夜嗨av一区二区三区免费区| 午夜精品偷拍| 日韩亚洲欧美在线观看| 欧美一区二区三区四区夜夜大片| 麻豆av一区二区三区久久| 欧美日韩一区二区在线观看视频| 国产亚洲精品一区二区| 亚洲乱码国产乱码精品精天堂 | 亚洲黄色成人| 午夜精品久久久久久久久久久久久| 久久在线视频| 国产精品久久一级| 亚洲国产欧美一区二区三区久久 | 午夜精品久久久久影视| 亚洲人精品午夜在线观看| 性欧美办公室18xxxxhd| 欧美激情乱人伦| 国产一区二区三区成人欧美日韩在线观看| 亚洲二区视频在线| 亚洲欧美国内爽妇网| 日韩午夜在线播放| 久久久一区二区| 国产精品久久久久aaaa樱花| 亚洲国产欧美日韩精品| 欧美在线播放一区| 亚洲一区精品在线| 欧美劲爆第一页| 国产综合久久久久久鬼色| 亚洲天堂网站在线观看视频| 亚洲人成网站在线观看播放| 久久精品视频在线免费观看| 国产精品99一区二区| 亚洲欧洲精品天堂一级| 久久疯狂做爰流白浆xx| 午夜精品福利在线观看| 欧美激情一区二区三区在线| 国产一区二区三区高清在线观看| 一本色道久久综合狠狠躁篇的优点| 91久久极品少妇xxxxⅹ软件| 久久精品理论片| 国产精品久久久久久久久搜平片| 亚洲人成网站影音先锋播放| 亚洲黑丝一区二区| 久久伊人亚洲| 国产一区自拍视频| 午夜一区二区三视频在线观看| 亚洲欧美一区二区精品久久久| 欧美日韩精品免费观看视频完整| 1024成人网色www| 欧美制服第一页| 久久精品国产一区二区三区| 国产美女一区二区| 亚洲免费视频一区二区| 亚洲免费在线电影| 国产精品qvod| 亚洲婷婷综合久久一本伊一区| 一本久道久久综合婷婷鲸鱼| 欧美精品亚洲精品| 亚洲黄色在线观看| 日韩亚洲欧美中文三级| 欧美成人69| 亚洲欧洲一区二区三区| 99视频一区二区| 欧美色道久久88综合亚洲精品| 亚洲人成网站影音先锋播放| 99视频在线观看一区三区| 欧美日韩成人综合在线一区二区| 亚洲国产日韩一区| 日韩视频免费在线| 欧美日韩另类丝袜其他| 一区二区三区高清在线 | 亚洲二区在线视频| 欧美va天堂| 91久久久久久久久| 99精品国产在热久久| 欧美日韩性视频在线| 一区二区日韩精品| 欧美一区二区三区视频在线| 国产日韩一区二区三区| 性欧美1819sex性高清| 久久久精品久久久久| 禁久久精品乱码| 亚洲欧洲精品一区二区三区波多野1战4 | 国产精品一区久久| 欧美一区二区三区四区在线观看地址| 久久久久天天天天| 在线观看一区视频| 一区二区av在线| 国产精品成人观看视频免费| 亚洲欧美激情一区二区| 久久久久久午夜| 亚洲成人在线网| 99热免费精品| 国产精品白丝av嫩草影院| 午夜精品久久久久99热蜜桃导演| 久久久中精品2020中文| 亚洲福利小视频| 亚洲图色在线| 国产日韩欧美中文在线播放| 久久精品亚洲热| 欧美日韩不卡一区| 午夜一区二区三区在线观看| 欧美 日韩 国产在线| 一本色道久久综合狠狠躁篇怎么玩| 欧美中文字幕| 91久久国产综合久久91精品网站| 亚洲一区二区三区免费视频| 国产午夜精品视频| 99re热这里只有精品免费视频| 国产精品三区www17con| 亚洲高清不卡在线| 欧美网站在线观看| 亚洲国产精品成人一区二区| 欧美日韩人人澡狠狠躁视频| 香蕉久久国产|