2017-03-17 59 views
0

因此,我正在製作自定義鍵盤,但其高度因某種原因被強制。我試圖改變視圖的屬性和大小檢查器中的一些選項,但它從來沒有幫助。通過故事板自定義鍵盤高度

這是我迄今爲止的嘗試。
Attempt 1 small
Attempt 1 temporary

正如你所看到的,當我跑我的項目,相比蘋果的iOS鍵盤鍵盤的高度變得太小。我注意到,短暫的一秒鐘,鍵盤的高度就變得正常了(與Apple的iOS鍵盤相同)。

然後,我試圖通過給鍵盤的包含視圖一個固定的高度來強制高度,而不是將它固定到容器的頂部邊框。它的工作,但它涵蓋了所有粗糙的屏幕,所以它是完全不實際的。

所以我試着給它一個與容器高度成比例的高度,用不同的乘數值(如0.3),但它恢復了原來的行爲。它還填充了通常由正確的蘋果iOS鍵盤尺寸佔據的剩餘空間,並具有白色背景顏色。

我正在使用垂直StackView,其中包含3個水平StackViews與所有按鈕。我嘗試刪除堆棧視圖和測試只是一個普通的看法,但它也縮小了相同的方式,所以我想這是一個事實,這是一個自定義的鍵盤擴展。 至於代碼,我沒有編輯鍵盤的ViewController的模板中的任何東西,除了按鈕的動作讀取他們的標題和插入文本。

如果不清楚,我通過創建一個單一視圖應用程序項目到達了這個階段,併爲它添加了一個自定義鍵盤擴展,作爲一個新的目標。我添加了一個Storyboard,並將其主界面指向它。

關於如何實現可以作爲容器高度的函數的自定義高度的任何想法?

非常感謝

+0

我不明白爲什麼我的問題了下來投連壽這個問題從來沒有正確回答堆棧溢出。 – Tarek

回答

1

我在Reddit上回答了你,但那是錯誤的。我的鍵盤設置與你不同。您是否嘗試過加入viewDidLoad方法中的()約束

let constraint = NSLayoutConstraint(item: self.view, 
              attribute: .height, 
              relatedBy: .equal, 
              toItem: nil, 
              attribute: .notAnAttribute, 
              multiplier: 0.0, 
              constant: 500) // Set custom height here 
self.view.addConstraint(constraint) 
+0

我還沒有機會嘗試任何建議,但因爲我的學習,但我嘗試的一件事是在XIB文件中設計我的鍵盤。令人驚訝的是,它像一個魅力,它繼承了蘋果的iOS默認鍵盤的高度,無論設備的大小和方向。我可能不需要改變高度,因爲默認鍵盤的高度是好的(至少在我的項目的這個階段),但至少它的工作方式不同於我在Storyboard中它自己縮小的問題。 – Tarek

+0

好吧,這實際上與鍵盤的NIB文件一起工作良好。因此,如果不設置約束,鍵盤將繼承默認的iOS鍵盤高度。這只是完美的作品。 我在updateViewConstraints()方法中添加了代碼,並在viewDidLoad()中添加了NIB的代碼。運作良好,並自動適應不同的方向。 我仍然想知道故事板究竟有什麼問題:S我的解決方案標記爲Accepted。再次感謝 :) – Tarek