<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > iOS 7: 隱藏的特性和解決之道

          iOS 7: 隱藏的特性和解決之道

          作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

          分頁(yè)

          UIWebView 使用了新的技巧來(lái)自動(dòng)分頁(yè)帶paginationMode的網(wǎng)站。有一大堆與此功能相關(guān)的新屬性:

          @property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);

          @property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);

          @property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);

          @property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);

          @property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);

          現(xiàn)在而言,雖然這可能并非對(duì)于大多數(shù)網(wǎng)站都有用,但它肯定是生成簡(jiǎn)單的電子書閱讀器或顯示文本的一種更好的方式。加點(diǎn)樂子的話,請(qǐng)嘗試將它設(shè)置為UIWebPaginationModeBottomToTop。

          會(huì)飛的 Popovers

          想知道為什么你的popovers瘋了一樣到處亂飛?在UIPopoverControllerDelegate協(xié)議中有一個(gè)新的代理方法使你能控制它:

          (void)popoverController:(UIPopoverController *)popoverController

          willRepositionPopoverToRect:(inout CGRect *)rect

          inView:(inout UIView **)view

          當(dāng)popover錨點(diǎn)是指向一個(gè)UIBarButtonItem時(shí),UIPopoverController會(huì)有一些動(dòng)作,但如果你讓它在一個(gè)view或者rect中顯示,你可能就需要實(shí)現(xiàn)此方法并正常返回。一個(gè)花費(fèi)了我相當(dāng)長(zhǎng)的時(shí)間來(lái)驗(yàn)證的問(wèn)題——如果你通過(guò)改變preferredContentSize來(lái)動(dòng)態(tài)調(diào)整你的popovers,那么這個(gè)方法就特別要求得以實(shí)現(xiàn)。蘋果公司現(xiàn)在對(duì)改變popovers大小的請(qǐng)求更嚴(yán)格,如果沒有預(yù)留足夠的空間,popover將會(huì)到處移動(dòng)。

          鍵盤支持

          蘋果公司不只為我們提供了全新的framework用于游戲控制器,它也給了我們這些鍵盤愛好者一些提示!你會(huì)發(fā)現(xiàn)新定義的公用鍵像 UIKeyInputEscape 或 UIKeyInputUpArrow,可以使用所有新的 UIKeyCommand 類截查。在 iOS7 之前,只能通過(guò)一些難以言表的手段來(lái)處理鍵盤命令,現(xiàn)在,就讓我們操起藍(lán)牙鍵盤試試看我們能用這個(gè)做什么!

          開始之前,你需要對(duì)責(zé)任者鏈有個(gè)了解。你的 UIApplication 繼承自 UIResponder,UIView 和 UIViewController 也是如此。如果你處理過(guò) UIMenuItem 并且沒有使用我的基于塊的包裝的話,那么你已經(jīng)了解了這些。事件先被發(fā)送到最上層的響應(yīng)者,然后一級(jí)級(jí)往下傳遞直到 UIApplication 。為了捕獲按鍵命令,你需要告訴系統(tǒng)你關(guān)心哪些鍵命令(而不是全捕獲)。為了完成這個(gè),你需要重寫keyCommands這個(gè)新屬性:

          (NSArray *)keyCommands

          {

          return @[[UIKeyCommand keyCommandWithInput:@f

          modifierFlags:UIKeyModifierCommand

          action:@selector(searchKeyPressed:)]];

          }

          - (void)searchKeyPressed:(UIKeyCommand *)keyCommand

          {

          // Respond to the event

          }

          現(xiàn)在可別太激動(dòng),需要注意的是,這個(gè)方法只在鍵盤可見時(shí)有效(比如有類似 UITextView 這樣的對(duì)象作為第一響應(yīng)者時(shí))。對(duì)于全局熱鍵,你仍然需要用上面的方法。除卻那些,這個(gè)路徑還是很優(yōu)雅的。不要覆蓋類似 cmd-V 系統(tǒng)的快捷鍵,它會(huì)被自動(dòng)映射為粘貼功能。

          還有一些新的預(yù)定義的響應(yīng)行為如:

          1

          2- (void)increaseSize:(id)sender NS_AVAILABLE_IOS(7_0);

          - (void)decreaseSize:(id)sender NS_AVAILABLE_IOS(7_0);

          它們分別對(duì)應(yīng)著 cmd+ 和 cmd- 命令,用來(lái)放大/縮小內(nèi)容。

          匹配鍵盤背景

          蘋果公司終于公開了 UIInputView,其中提供了一種方式——使用UIInputViewStyleKeyboard來(lái)匹配鍵盤樣式。這使得你可以編寫自定義的鍵盤或者帶默認(rèn)樣式的默認(rèn)鍵盤擴(kuò)展(工具條)。這個(gè)類以前就存在了,不過(guò)現(xiàn)在我們終于可以繞過(guò)私有API的方式來(lái)使用它了。

          如果 UIInputView 是一個(gè) inputView 或者 inputAccessoryView 的根視圖,它將只顯示一個(gè)背景,否則它將是透明的。遺憾的是,這并不能讓你實(shí)現(xiàn)一個(gè)未填充的分離態(tài)的鍵盤,但它仍然比用一個(gè)簡(jiǎn)單的 UIToolbar 要好。我還沒看到蘋果在何處使用這個(gè)新API,貌似它只作為一個(gè) UIToolbar 使用在 Safari 上。

          了解你的網(wǎng)絡(luò)

          雖然早在 iOS4 的時(shí)候,關(guān)于網(wǎng)絡(luò)信息的大部分已經(jīng)在 CTTelephony 暴露了,但它通常只用于特定場(chǎng)景并非十分有用。iOS7 中,蘋果公司為其添加了一個(gè)方法,其中最有用的:currentRadioAccessTechnology。這個(gè)使你能知曉手機(jī)是處于較慢的GPRS還是高速的LTE或者介于其中。目前還沒有方法得到連接速度(當(dāng)然手機(jī)本身也無(wú)法獲取這個(gè)),但是這足以用來(lái)優(yōu)化一個(gè)下載管理器,讓其在EDGE下不用嘗試同時(shí)去下載6張圖片了。

          現(xiàn)在還沒有currentRadioAccessTechnology的相關(guān)文檔,因此存在一些不正規(guī)或者錯(cuò)誤的用法。當(dāng)你想要獲取當(dāng)前網(wǎng)絡(luò)信號(hào)值,你應(yīng)當(dāng)注冊(cè)一個(gè)CTRadioAccessTechnologyDidChangeNotification通知而不應(yīng)該去輪詢這個(gè)屬性。為了獲取這些通知,你需要使用CTTelephonyNetworkInfo的一個(gè)實(shí)例,注意不要在通知中創(chuàng)建 CTTelephonyNetworkInfo 的實(shí)例,否則會(huì) crash。

          在這個(gè)簡(jiǎn)單的例子中,我在block中捕獲并持有了 telephonyInfo,大家可以忽略這個(gè):

          1

          2

          3

          4

          5

          6

          7

          8

          9CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];

          NSLog(@Current Radio Access Technology: %@, telephonyInfo.currentRadioAccessTechnology);

          [NSNotificationCenter.defaultCenter addObserverForName:CTRadioAccessTechnologyDidChangeNotification

          object:nil

          queue:nil

          usingBlock:^(NSNotification *note)

          {

          NSLog(@New Radio Access Technology: %@, telephonyInfo.currentRadioAccessTechnology);



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();