在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. 檢測鍵盤搜索按鈕
- 8. Android鍵盤按鈕更改
- 9. 更改UISearchBar搜索按鈕上的UITableView數據源點擊
- 10. 取消按鈕解僱的UISearchBar鍵盤
- 11. Android鍵盤「開始」按鈕到「搜索」
- 12. 隱藏鍵盤上的單擊輸入按鈕或搜索按鈕
- 13. iphone - UISearchBar上的搜索按鈕
- 14. 無法更改UISearchBar中的取消按鈕的標題
- 15. 使用搜索查看時隱藏軟鍵盤上的搜索/搜索按鈕?
- 16. Opencart 2更改搜索按鈕顏色
- 17. 快速更改按鈕標題後的後退按鈕標題
- 18. 按鈕每次按下更改標題
- 19. 更改按鈕標題問題
- 20. UISearchBar鍵盤返回鍵
- 21. 使用iPhone多觸點鍵盤搜索按鈕
- 22. 在iPhone/iPad Safari瀏覽器鍵盤中顯示'搜索'按鈕
- 23. ios鍵盤上的搜索按鈕不提交表格
- 24. 如何收聽searchView中的鍵盤搜索按鈕
- 25. 如何在鍵盤上創建動作來搜索按鈕?
- 26. 更改USB鍵盤的按鍵
- 27. 如何更改Iphone sdk中的搜索欄取消按鈕的標題?
- 28. 軟鍵盤按鈕
- 29. 如何在按下鍵盤按鍵時更改焦點不同的J按鈕?
- 30. 如何按下鍵盤上的按鍵時更改按鈕的外觀。 JavaFx
這裏我解釋了http://stackoverflow.com/a/26712861/2981840 – Chidhambaram 2014-11-03 11:05:43