是否可以从独立网络应用程序的 iPhone 弹出键盘中删除表单助手?我知道普遍的共识是它在 Mobile Safari 中是不可能的,但是一个独立的应用程序在 UIWebView
中运行。 , 并且在几个方面有不同的功能 ( example ), 所以我希望这是可能的。
您可以在键盘上方的此处看到它:
Previous 和 Next 按钮在 <form>
之间循环输入。但我有一个 <input>
元素,因此它们被禁用。 “完成”按钮隐藏了键盘,但由于我有一个高度灵活的 <ul>
(它占用了键盘和 <input>
之间的空间),我在这个页面上没有其他东西,它没有任何用处。
在一个小屏幕上,键盘几乎占据了一半的屏幕,构成这个工具栏的 44 个像素是对空间的巨大浪费(整个 <li>
的值(value))。
native iOS 应用程序可以删除它,所以我知道这至少可以在手机上实现,只是我还没有发现在网络应用程序中执行此操作的方法。这是来自 Facebook 应用程序,页面与我的非常相似:
我试过使用 <input>
没有包裹在 <form>
中还使用 contenteditable
<div>
, 但结果是一样的。有几个自定义-webkit-
样式来控制 Web 应用程序界面的各个方面,但它们的文档很少,搜索也没有找到任何相关内容。
有什么方法可以删除网络应用程序中的表单助手?
最佳答案
如果您的应用是包装在 native Objetive-C 应用中的 Web 应用,则可以通过操纵键盘 View 实现这一点。
首先,注册接收 keyboardDidShow 通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
这将在键盘出现时调用以下方法:
-(void)keyboardDidShow:(NSNotification*)notif
{
NSArray *array = [[UIApplication sharedApplication] windows];
for (UIWindow* wind in array) {
for (UIView* currView in wind.subviews) {
if ([[currView description] hasPrefix:@"<UIPeripheralHostView"]) {
for (UIView* perView in currView.subviews) {
if ([[perView description] hasPrefix:@"<UIWebFormAccessory"]) {
[perView setHidden:YES];
}
}
}
}
}
}
此方法遍历屏幕上的 View ,寻找表单助手并将其隐藏。
注意:Apple 可能不会拒绝这一点,因为我已经看到它被 Facebook 等公司使用,但这种技术可能会在即将发布的 iOS 版本中失效。
关于iphone - 从 iPhone 独立 Web 应用程序的键盘中删除表单助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904892/