2015-04-29 30 views
3

我有一個視圖,在其中顯示數字鍵盤。我的問題是鍵盤缺少頂線。用白色背景出現不愉快的效果:如何在ios上的鍵盤頂部添加一行?

enter image description here

我怎樣才能在頂部加入一個1點視圖來模擬頂線?

+0

這是一個自定義鍵盤或標準電話手柄鍵盤類型? – rmaddy

+0

這是簡單應用中的標準鍵盤,@rmaddy。我在我的主應用程序中有同樣的問題(我只使用代碼來移動整個視圖,所以編輯的控件不會隱藏)。 – new2ios

+0

在你的問題中顯示一些相關的代碼。 – rmaddy

回答

7

快速和骯髒的:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth([UIScreen mainScreen].bounds), 1.0/[UIScreen mainScreen].scale)]; 
    separatorView.backgroundColor = [UIColor lightGrayColor]; 
    textField.inputAccessoryView = separatorView; 

    return YES; 
} 
+0

它的工作原理,除了我必須將它設置爲'textFieldDidBeginEditing',而不是'textFieldShouldBeginEditing'。 – new2ios

+0

很高興聽到!在我的演示項目中,雖然它也在'shouldBegin'中工作... –

+0

可能是因爲我有代碼來移動視圖(所以編輯的'UITextFiled'沒有隱藏)。另外我的文本字段是自定義控件。 – new2ios

1

最簡單的方法是將一個1pt高的UIView作爲inputAccessoryView添加到UITextField。見Custom Views for Data Input

如果您使用多個字段或者更願意對其進行更多的控制,您可以將子視圖添加到當前控制器的view並將其適當放置。爲此,請使用操作系統發佈的鍵盤通知(UIKeyboardWillShowNotificationUIKeyboardWillHideNotification),如How to make a UITextField move up when keyboard is present?中所述。

0

對於斯威夫特3,iOS的10

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    var separatorView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 1.0/UIScreen.main.scale)) 
    separatorView.backgroundColor = UIColor.lightGray 
    textField.inputAccessoryView = separatorView 
    return true 
} 
相關問題