iOS 基於鍵盤的編程所需技巧

來源:互聯網
上載者:User

首先,你得監聽鍵盤的事件,最基本的兩個事件:

UIKeyboardWillShowNotification

UIKeyboardWillHideNotification

UIKeyboard...

iOS 5新增加了一些

UIKeyboardDidChangeFrameNotification(will)

一般情況下,前兩個事件已經可以完成你要做的事情。在你的事件處理方法中加上NSNotification參數可以為你獲得更多的東西:

view plainprint?

- (void)keyboardWillShow:(NSNotification *)notification 

{  

    CGPoint beginCentre = [[[notification userInfo] valueForKey:UIKeyboardCenterBeginUserInfoKey] CGPointValue]; 

    CGPoint endCentre = [[[notification userInfo] valueForKey:UIKeyboardCenterEndUserInfoKey] CGPointValue]; 

    CGRect keyboardBounds = [[[notification userInfo] valueForKey:UIKeyboardBoundsUserInfoKey] CGRectValue]; 

    CGRect keyboardFrames = [[[notification userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; 

    UIViewAnimationCurve animationCurve = [[[notification userInfo] valueForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; 

    NSTimeInterval animationDuration = [[[notification userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; 

 如果你要在程式中使用鍵盤的高度和寬度,永遠不要嘗試去手動指定,動態擷取也很簡單而且一定準確,不會出現鍵盤

擋住輸入框的問題。

你可以利用這些參數把動畫做的和鍵盤一致。假設你要把一個控制項放在Window上,並且想讓它的互動方式和鍵盤一樣,

如果只是簡單的做個向下位移動畫並不能很好的完成,因為你還要考慮從導覽列中Pop出來的時候,這個時候的鍵盤動畫是

在x軸上位移的,你用UIKeyboardFrameEndUserInfoKey擷取的frame可以很準確的做到。

 

如果在某些特殊的欄位上,你不想用預設的鍵盤,而是用類似於Picker這樣的拾取器,你只需要設定inputView就行了,用你自訂的視圖去替換掉鍵盤;如果你想在鍵盤上面再增加一個視圖,比如toolbar,那麼你可以不用自己對toolbar的位置進行控制,只需要設定inputAccessoryView就行了,這個值預設為nil,設定的視圖將在你的控制項變成第一響應者的時候顯示在inputView的上方。

 

在UIScrollView(UITableView繼承於它)上,當你觸碰控制項使之變成第一響應者的時候,系統會自動調整位置,避免鍵盤擋住控制項。如果在代碼中用becomeFirstResponder使之變成第一響應者將不會出現自動調整。你可以設定contentOffset去手動調整。其他視圖,最簡單的方法就是修改控制項的frame屬性,讓控制項總是顯示在可見地區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.