在UISearchBar控件中,是否將鍵盤的搜索鍵標題更改爲完成?更改UISearchBar /鍵盤搜索按鈕標題
回答
對於命名tablesearchbar搜索欄:
// Set the return key and keyboard appearance of the search bar
for (UIView *searchBarSubview in [tableSearchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)searchBarSubview setReturnKeyType:UIReturnKeyDone];
[(UITextField *)searchBarSubview setKeyboardAppearance:UIKeyboardAppearanceAlert];
}
@catch (NSException * e) {
// ignore exception
}
}
}
由於警報式鍵盤是半透明的,我可以看到我的背後視圖。它看起來不太好,因爲我在鍵盤背後有多個元素,這使得鍵難以突出。我想要一個全黑鍵盤。
因此,當編輯文本時,我將黑色的UIImageView動畫到鍵盤後面的位置。這給出了全黑鍵盤的外觀。
- (void)textFieldDidBeginEditing:(UITextField *)textField {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.25];
blackBoxForKeyboard.frame = CGRectMake(0, 377, 320, 216);
[UIView commitAnimations];
}
一個更有用的提示,向運行循環代碼(在 「@try」)部分。
這使「完成」按鈕,當文本字段爲空:
UITextField *tf = (UITextField *)searchBarSubview;
tf.enablesReturnKeyAutomatically = NO;
謝謝!這也適用於iOS7的Gregory解決方案。 – jbandi 2014-03-08 17:24:27
,因爲它與可選的方法的協議,你應該測試方法都單獨,而不是嘗試醒目的。
for (UIView *searchBarSubview in searchBar.subviews)
{
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)])
{
// keyboard appearance
if ([searchBarSubview respondsToSelector:@selector(setKeyboardAppearance:)])
[(id<UITextInputTraits>)searchBarSubview setKeyboardAppearance:UIKeyboardAppearanceAlert];
// return key
if ([searchBarSubview respondsToSelector:@selector(setReturnKeyType:)])
[(id<UITextInputTraits>)searchBarSubview setReturnKeyType:UIReturnKeyDone];
// return key disabled when empty text
if ([searchBarSubview respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)])
[(id<UITextInputTraits>)searchBarSubview setEnablesReturnKeyAutomatically:NO];
// breaking the loop when we are done
break;
}
}
這將適用於iOS < = 6.對於iOS> = 7時,您需要循環中searchBar.subviews[0].subviews
。
由於iOS的7測試5,運行循環的回答並沒有爲我工作,但這並:
for(UIView *subView in [searchBar subviews]) {
if([subView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subView setReturnKeyType: UIReturnKeyDone];
} else {
for(UIView *subSubView in [subView subviews]) {
if([subSubView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subSubView setReturnKeyType: UIReturnKeyDone];
}
}
}
}
爲防萬一還不清楚,使用if/else的原因是if爲iOS 6向後兼容性,其他爲iOS 7. – 2013-09-18 14:13:23
奇妙的答案。這適用於iOS 7.謝謝 – Katushai 2014-08-18 20:40:22
這適用於iOS8 – 2015-03-31 17:05:44
我想這裏顯示的所有解決方案,和他們都不工作了我的UISearchBar(xcode5編譯iOS7)。我結束了這個遞歸函數,它爲我工作:
- (void)fixSearchBarKeyboard:(UIView*)searchBarOrSubView {
if([searchBarOrSubView conformsToProtocol:@protocol(UITextInputTraits)]) {
if ([searchBarOrSubView respondsToSelector:@selector(setKeyboardAppearance:)])
[(id<UITextInputTraits>)searchBarOrSubView setKeyboardAppearance:UIKeyboardAppearanceAlert];
if ([searchBarOrSubView respondsToSelector:@selector(setReturnKeyType:)])
[(id<UITextInputTraits>)searchBarOrSubView setReturnKeyType:UIReturnKeyDone];
if ([searchBarOrSubView respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)])
[(id<UITextInputTraits>)searchBarOrSubView setEnablesReturnKeyAutomatically:NO];
}
for(UIView *subView in [searchBarOrSubView subviews]) {
[self fixSearchBarKeyboard:subView];
}
}
然後我把它稱爲像這樣:
_searchBar = [[UISearchBar alloc] init];
[self fixSearchBarKeyboard:_searchBar];
使用Xcode 5 + iOS7,文本輸入將位於子子視圖中而不是子視圖中。所以基本上你使用我的Xcode 4解決方案並添加了遞歸調用。爲獲得最佳性能,您可以測試iOS版本,如果是iOS7,則可以瀏覽'subviews [0] .subviews'而不是'subviews'。 – 2014-01-15 13:21:46
至少爲iOS 8,簡單地說:
[self.searchBar setReturnKeyType:UIReturnKeyDone];
只是爲了涵蓋所有iOS版本:
NSArray *subviews = [[[UIDevice currentDevice] systemVersion] floatValue] < 7 ? _searchBar.subviews : _searchBar.subviews[0].subviews;
for (UIView *subview in subviews)
{
if ([subview conformsToProtocol:@protocol(UITextInputTraits)])
{
UITextField *textField = (UITextField *)subview;
[textField setKeyboardAppearance: UIKeyboardAppearanceAlert];
textField.returnKeyType = UIReturnKeyDone;
break;
}
}
對於斯威夫特改變的UISearchBar
searchBar.returnKeyType = UIReturnKeyType.Done
的返回鍵
可枚舉是如下
public enum UIReturnKeyType : Int {
case Default
case Go
case Google
case Join
case Next
case Route
case Search
case Send
case Yahoo
case Done
case EmergencyCall
@available(iOS 9.0, *)
case Continue
}
只是一個提醒!如果您將searchBar保留爲第一響應者,那麼在更改returnKeyType後,您需要關閉鍵盤並再次彈出以查看更改。
search.resignFirstResponder()
searchBar.returnKeyType = UIReturnKeyType.Done
search.becomeFirstResponder()
- 1. 如何禁用/啓用UISearchBar鍵盤的搜索按鈕?
- 2. 可可觸摸 - UISearchBar鍵盤 - 隱藏'搜索'按鈕
- 3. 無法隱藏鍵盤單擊搜索按鈕在UISearchBar
- 4. 搜索鍵盤中的搜索按鈕
- 5. 我如何解僱鍵盤上關於UISearchBar的鍵盤上的搜索按鈕?
- 6. 編程鍵盤上的搜索按鈕
- 7. 的UISearchBar搜索按鈕
- 8. 在搜索欄鍵盤禁用「搜索」按鈕
- 9. 檢測鍵盤搜索按鈕
- 10. Android鍵盤按鈕更改
- 11. 更改UISearchBar搜索按鈕上的UITableView數據源點擊
- 12. 取消按鈕解僱的UISearchBar鍵盤
- 13. Android鍵盤「開始」按鈕到「搜索」
- 14. 使用移動鍵盤搜索按鈕
- 15. 搜索時的UISearchBar和標題標題
- 16. UITextField鍵盤返回按鈕標題
- 17. 隱藏鍵盤上的單擊輸入按鈕或搜索按鈕
- 18. UISearchBar按鈕標籤問題
- 19. iphone - UISearchBar上的搜索按鈕
- 20. UISearchBar - 什麼是「搜索結果按鈕」?
- 21. 無法更改UISearchBar中的取消按鈕的標題
- 22. 更改文字後,無法更改UISearchBar取消按鈕標題顏色。
- 23. 使用搜索查看時隱藏軟鍵盤上的搜索/搜索按鈕?
- 24. 在SherlockActivity中按下搜索按鈕時關閉軟鍵盤
- 25. Android手柄「搜索」按鈕按下自定義鍵盤
- 26. Opencart 2更改搜索按鈕顏色
- 27. 將軟鍵區的下一個按鈕更改爲搜索
- 28. onClickListener鍵盤按鈕
- 29. 快速更改按鈕標題後的後退按鈕標題
- 30. 目標c按下鍵盤按鍵時更改背景顏色
這裏我解釋了http://stackoverflow.com/a/26712861/2981840 – Chidhambaram 2014-11-03 11:05:43