如何使应用程序键盘与 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 键盘相同?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 iPhone 尺寸快速使滚动视图达到键盘高度

我的 iOS 应用程序中的键盘在 iPhone 6 上太高了。如何在 XCode 中调整键盘的分辨率?

我的 iOS 应用程序中的键盘在 iPhone 6 上太高了。如何在 XCode 中调整键盘的分辨率?

iPhone键盘外观神奇变化

不要为网页中的特定文本框显示 iPhone 键盘? [复制]

禁用iPhone 4S /新iPad键盘上的听写按钮