如何使应用程序键盘与 iPhone 中的 Safari 键盘相同?
Posted
技术标签:
【中文标题】如何使应用程序键盘与 iPhone 中的 Safari 键盘相同?【英文标题】:How to make application keyboard same as safari keyboard in iPhone? 【发布时间】:2012-04-05 08:32:11 【问题描述】:我的客户要求我制作数字键盘的外观,就像它在 Safari 中可见一样。在 safari 中,可以看到键盘,顶部还有三个按钮,它们是 prev next 和 done。我想实现同样的目标。请告诉我实现这一目标的方法。
提前致谢
【问题讨论】:
【参考方案1】:这很简单,您只需要在键盘顶部添加一个 UIToolBar!
UIToolBar Apple Doc
还有,怎么做:
UIToolbar *myToolBar = [[UIToolbar alloc] init];
myToolBar.barStyle = UIBarStyleDefault;
[myToolBar sizeToFit];
UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(buttonClicked:)];
NSArray *array = [NSArray arrayWithObject:leftBarButton];
[leftBarButton release];
[myToolBar setItems:array];
myTextField.inputAccessoryView = myToolBar;
[myToolBar release];
【讨论】:
【参考方案2】:UITextField 有一个keyboardType 属性:
typedef enum
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
UIKeyboardType;
你的代码应该是这样的
if(user is prompted for numeric input only)
[textField setKeyboardType:UIKeyboardTypeNumberPad];
if(user is prompted for alphanumeric input)
[textField setKeyboardType:UIKeyboardTypeDefault];
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIToolbar_Class/Reference/Reference.html
这可能会有所帮助..!!!
【讨论】:
【参考方案3】:UITextField
有一个属性 (keyboardType
),可用于设置所需的键盘。
aTextField.keyboardType = UIKeyboardTypeDefault;
keyboardType 可以是以下之一:
UIKeyboardTypeDefault
UIKeyboardTypeASCIICapable
UIKeyboardTypeNumbersAndPunctuation
UIKeyboardTypeURL
UIKeyboardTypeNumberPad
UIKeyboardTypePhonePad
UIKeyboardTypeNamePhonePad
UIKeyboardTypeEmailAddress
你可以在这个地址找到截图: http://gprince.yolasite.com/index/uikeyboardtype
无论如何,如果您不在UIWebView
中显示您的键盘,您将不会获得带有 3 个按钮的顶部栏。一种解决方法是在键盘顶部添加一个包含所需栏的 UIView,但您的应用可能会被拒绝。网上有很多关于这个问题的讨论。
我个人的解决方案是在 NIB 视图中添加一个 UIView 并在我的键盘出现的同时显示它,而不是直接将它添加到键盘。
【讨论】:
以上是关于如何使应用程序键盘与 iPhone 中的 Safari 键盘相同?的主要内容,如果未能解决你的问题,请参考以下文章
我的 iOS 应用程序中的键盘在 iPhone 6 上太高了。如何在 XCode 中调整键盘的分辨率?
我的 iOS 应用程序中的键盘在 iPhone 6 上太高了。如何在 XCode 中调整键盘的分辨率?