有沒有辦法以編程方式啓用或禁用UIKeyboard
上的返回鍵?我能找到的最接近的是enablesReturnKeyAutomatically
,但這隻能說明是否要禁用它。如何禁用/啓用UITextField中的返回鍵?
回答
如果你可以獲得UIKeyboard對象本身(SDK中沒有公開的東西,請注意,如果你使用這些調用,Apple可能不會很開心),那麼有一個方便的setReturnKeyEnabled:成員函數。
id keyboard = [self magicallyGetAUIKeyboardInstance];
[keyboard setReturnKeyEnabled: NO];
(通過2.2 iPhone框架Erica Sadun's dump)
的magicallyGetAUIKeyboardInstance
的實現描述here。
一個好主意是創建一個文件從任何地方訪問這個類。下面是代碼:
UIKeyboard.h
#import <UIKit/UIKit.h>
@interface UIApplication (KeyboardView)
- (UIView *)keyboardView;
@end
UIKeyboard.m
#import "UIKeyboard.h"
@implementation UIApplication (KeyboardView)
- (UIView *)keyboardView
{
NSArray *windows = [self windows];
for (UIWindow *window in [windows reverseObjectEnumerator])
{
for (UIView *view in [window subviews])
{
if (!strcmp(object_getClassName(view), "UIKeyboard"))
{
return view;
}
}
}
return nil;
}
@end
現在,您可以導入並從自己的類訪問該類:
#import "UIKeyboard.h"
// Keyboard Instance Pointer.
UIView *keyboardView = [[UIApplication sharedApplication] keyboardView];
這個類,你可以在這裏找到的完整文檔:http://ericasadun.com/iPhoneDocs/_u_i_keyboard_8h-source.html
的更多信息,你可以在這裏找到:http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html
可能是下面的代碼段幫助。
textfield.enablesReturnKeyAutomatically = YES;
這是在UITextInputTraits iPhone SDK中公開可用。用這種方法,當沒有輸入文本的文本字段中提供
UITextField
的enablesReturnKeyAutomatically
屬性可以直接在Interface Builder進行設置,只需選擇文本字段,打開屬性檢查器返回鍵將被禁用。正如Tharindu所說,這將根據是否輸入任何文本自動啓用和禁用返回鍵。
當然,如果你需要在代碼中改變這一點,你還是可以將它通過編程設定nameTextField.enablesReturnKeyAutomatically = true
。
編輯解決downvotes:
否則,沒有正式的方式來啓用和禁用命令的返回鍵。我建議不要嘗試使用私有API來完成此操作。或者,您可以使用textFieldShouldReturn:
委託方法,並將您的條件/驗證放在那裏並作出相應的響應。
您可以覆蓋UITextField
的hasText
屬性來實現這一目標:
class CustomTextField : UITextField {
override public var hasText: Bool {
get {
return evaluateString(text)
}
}
}
凡evaluateString(_ text: String?) -> Bool
檢查對你所需要的輸入標準,例如字符數。
當然,這隻能與在UITextField
上設置的enablesReturnKeyAutomatically = true
結合使用。
我知道我的答案既不及時,也不是寫在Objective-C中,但鑑於我沒有能夠在其他任何地方找到答案,並且這個問題在其他線程中被常規引用,我認爲這裏是最好的地方發佈它。
- 1. 如何在Swift中手動啓用/禁用鍵盤返回鍵?
- 2. 如何手動啓用或禁用鍵盤上的返回鍵?
- 3. UISearchBar禁用返回鍵
- 4. 當UITextField被禁用時如何在leftView/rightView中啓用tap?
- 5. 啓用/禁用返回鍵類型反應原生
- 6. 如何在xcode中啓用ios鍵盤返回鍵功能?
- 7. 在QPlainTextEdit中禁用'返回'鍵
- 8. iPhone應用程序禁用UITextField鍵盤
- 9. 如何在啓用鍵盤返回鍵之前在UITextField中要求最小文本長度
- 10. 如何啓用完成鍵和返回鍵在ipad目標c
- 11. 使用UITextField上的UILongPressGestureRecognizer啓動鍵盤
- 12. 如何在Emacs中禁用軟返回?
- 13. Swift 3禁用或隱藏鍵盤UITextField
- 14. 如何禁用UITextField或鍵盤的文本自動更正?
- 15. 時的UITextField被竊聽如何禁用鍵盤?
- 16. 禁用音量,返回和通話鍵
- 17. Emacs - 禁用返回和退格鍵
- 18. IOS:禁用UItextfield
- 19. 啓用禁用按鍵?
- 20. 使用addSubview動態添加UITextField的UITableViewCell - 當鍵盤上的'返回'命中時如何獲取UITextField值
- 21. 當我按下UITextField中的返回鍵時如何隱藏鍵盤?
- 22. 如何禁用fabricjs中禁用shift鍵?
- 23. UITextField - 如何使用自定義鍵盤並禁用默認鍵盤
- 24. 如何禁用UITextField鍵盤而不隱藏它?
- 25. iPhone UITextField:如何通過返回鍵插入新行?
- 26. 如何在UITextField返回鍵上添加一個動作?
- 27. UITextField禁用光標
- 28. 如何在Android中啓用/禁用自動鍵盤鎖
- 29. 如何爲UITextField鍵盤啓用.com密鑰?
- 30. 如何禁用保持並滾動UITextField
還沒有機會測試它,但不應該只是[UIKeyboard activeKeyboard]工作? – 2009-04-25 18:28:18
是否肯定Apple會拒絕使用此代碼的應用程序?即使實施是適當的? – samvermette 2010-11-06 22:52:55
@sam蘋果不太可能會測試你對這個方法的調用,但它可能會改變底層API並破壞你的代碼。 – bshirley 2013-04-25 15:59:06