我有一個包含多個文本字段的視圖,並且我想要執行與單擊文本字段時「聯繫人」應用程序所執行的操作相同的效果,否則該文本字段會在鍵盤出現時隱藏。當我解僱鍵盤時,我計劃正確地將視圖向下移動。移動視圖以適應鍵盤
我懷疑我是通過更改Frame值來做到這一點的,但我需要這樣做才能讓它動起來,這樣它就不會對用戶產生衝擊。
建議?例子?
我有一個包含多個文本字段的視圖,並且我想要執行與單擊文本字段時「聯繫人」應用程序所執行的操作相同的效果,否則該文本字段會在鍵盤出現時隱藏。當我解僱鍵盤時,我計劃正確地將視圖向下移動。移動視圖以適應鍵盤
我懷疑我是通過更改Frame值來做到這一點的,但我需要這樣做才能讓它動起來,這樣它就不會對用戶產生衝擊。
建議?例子?
在UIScrollView中包裝您的視圖的確是要走的路。與textFieldDidEndEditing
代表一樣,您也可以訂閱UIKeyboardDidHideNotification
和UIKeyboardDidShowNotification
,並且當您收到關於鍵盤確實隱藏/顯示的通知時,請適當地滾動您的視圖。如果你需要它,我可以張貼的鍵盤通知代碼示例:)
編輯 想我會反正張貼代碼 - 有人可能會發現它的幫助:
您需要申報通知監聽器:
NSObject hideObj = NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.DidHideNotification, HandleKeyboardDidHide);
NSObject showObj = NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.DidShowNotification, HandleKeyboardDidShow);
那麼你的操作方法看起來是這樣的:
void HandleKeyboardDidShow(NSNotification notification)
{
scrollView.ScrollRectToVisible(textfield.Frame, true);
}
void HandleKeyboardDidHide(NSNotification notification)
{
// scroll back to normal
}
編輯2
所以,如果你想刪除的觀察員視圖時被破壞,首先你需要確保你添加的觀察者則使用下面的代碼刪除它們時分配NSObject
S:
NSNotificationCenter.DefaultCenter.RemoveObserver(showObj);
NSNotificationCenter.DefaultCenter.RemoveObserver(hideObj);
希望有幫助。
我剛剛在一個應用程序上做了這個。我使用scrollview來包裝整個視圖,然後在textFieldDidEndEditing-delegate方法上使用scrollToRectVisible。它非常完美!
有關keyboard management主題的Apple文檔非常好,包含大多數情況下的代碼(位於底部),您可以將其複製/粘貼到應用程序中。
祝你好運。
我同意觀察員的觀點,最好是在不再需要的時候去掉它們。另外,UIScrollView.ScrollRectToVisible方法需要兩個參數,而不是一個參數。第二個參數是動畫。 – 2011-03-03 18:37:37
對不起!我在公共汽車上從手機上完成 - 將在今天早上更正! – Luke 2011-03-04 00:10:29
這非常好,我真的很感激它,我甚至不知道如何連接到UIKeyboard事件。 textFieldDidBeginEditing每次都會觸發,這也很棒。 – 2011-03-04 14:26:36