在我的iOS应用崩溃日志中,我发现了以下声明:
HW kbd Failed to set (null) as keyboard focus ios
Run Code Online (Sandbox Code Playgroud)
有谁知道这是什么以及如何解决它?
在我的测试中,我有一个带有预先存在的文本的文本字段.我想删除内容并键入新字符串.
let textField = app.textFields
textField.tap()
// delete "Old value"
textField.typeText("New value")
Run Code Online (Sandbox Code Playgroud)
用硬件键盘删除字符串时没有为我生成记录.用软件键盘做同样的事后我得到了:
let key = app.keys["Usu?"] // Polish name for the key
key.tap()
key.tap()
... // x times
Run Code Online (Sandbox Code Playgroud)
要么
app.keys["Usu?"].pressForDuration(1.5)
Run Code Online (Sandbox Code Playgroud)
我担心我的测试是依赖于语言的,所以我为我支持的语言创建了类似的东西:
extension XCUIElementQuery {
var deleteKey: XCUIElement {
get {
// Polish name for the key
if self["Usu?"].exists {
return self["Usu?"]
} else {
return self["Delete"]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在代码中看起来更好:
app.keys.deleteKey.pressForDuration(1.5)
Run Code Online (Sandbox Code Playgroud)
但它非常脆弱.从模拟器退出后Toggle software keyboard重置,我有一个失败的测试.我的解决方案不适用于CI测试.如何解决这个问题更加普遍?
我正在开发一个具有UIViewController的项目,在视图控制器上,在scrollview上有一个UIScrollView和一个UITextField.像这样:
我正试图解除键盘并在文本字段中键入一些文本后隐藏它并点击文本字段外的任何位置.我试过以下代码:
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self;
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
当我在滚动视图外面点击时它适用于我,但当我点击滚动视图时没有任何反应,键盘也不会隐藏.
点击文本域外的任何位置时有没有办法解除键盘?谢谢
我确信这并不困难,但我无法使用textview而不是文本字段查找有关如何使用return/done键解除键盘的信息.这是我到目前为止尝试过的(与文本字段一起使用.)
非常感谢您的任何帮助!
// PostTravelQuestion.swift
class PostTravelQuestion: UIViewController, UITextViewDelegate {
@IBAction func closepostpage(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
@IBOutlet var postquestion: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
postquestion.delegate = self
}
self addDoneToolBarToKeyboard:self.textView
/*func textViewShouldEndEditing(textView: UITextView) -> Bool {
textView.resignFirstResponder()
return true
}*/
/*override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
postquestion.resignFirstResponder()
self.view.endEditing(true)
}*/
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textViewShouldReturn(textView: …Run Code Online (Sandbox Code Playgroud) 我正在使用3.2 sdk开发iPad应用程序.我正在处理获取键盘大小以防止我的文本字段隐藏在它后面.
我在Xcode中收到警告 - > UIKeyboardBoundsUserInfoKey已弃用,我应该使用什么而不是获取此警告?
在iOS8之前,.focus()在输入元素上使用Javascript 方法似乎没有效果(虚拟键盘不会显示).在最新的iOS 8版本之后,运行该.focus()方法似乎对页面加载没有影响,但是一旦用户触摸屏幕上的任何地方,虚拟键盘将立即出现并将页面滚动到焦点对准的元素.(当我使用HTML属性"autofocus"时,这也是一个问题)
此更改导致我的网站上的iOS8用户出现问题.当用户尝试单击页面上的按钮时,突然滚动和键盘外观会导致他们无意中单击屏幕下方的按钮.
我假设这是iOS8中的一个错误而不是故意的功能,我的问题是解决这个问题最有效的解决方案是什么?
navigator.userAgent每次使用该.focus()方法时,是否必须检查设备是否为iOS8 ?
我正在尝试实现与Apple的消息应用程序中底部文本输入栏类似的定位行为.
我尝试了许多方法,搜索高低,有许多类似的问题,但没有一个令人满意.
指定:
UIToolbar视图的底部有一个建议的解决方案:
此解决方案不符合第二个要求的特殊情况(工具栏是在键盘出现和消失时跟随键盘):
UIScrollViewKeyboardDismissMode被介绍了.它启用了用于解除键盘的交互式手势.当用户翻过键盘的顶部边缘时,键盘框架逐渐跟随.此解决方案无法容纳此行为,只是将工具栏搁置在其动画位置.此外,此解决方案也无法满足第三个要求的特殊情况(当键盘可见时,工具栏应保持在键盘顶部):
此解决方案的另一个问题:
下一个提出的解
UIResponder的inputAccessoryView这个解决方案似乎是Apple打算支持这种行为的方式,因为它解决了手动设置工具栏动画的所有缺点.但是这个解决方案完全忽略了第四个要求(当键盘被隐藏时,工具栏保持("停靠")在视图的底部).
似乎解决方案是使用UIResponder's inputAccessoryView,但不知何故使得inputAccessoryView不移动到视图之下.我正在寻找干净的代码来实现这一目标.在其他地方有精心制作的,几乎是高贵的尝试,但如上所述,它们不符合要求.
在我的特定情况下,我希望使用UINavigationController工具栏,这需要额外的问题,因为这不是预期的行为UINavigationController.无论如何,我愿意介绍一些hacky修复来实现这一目标.
在大多数iPhone应用程序中,第一次出现键盘时会出现相当长的延迟(可能是创建键盘需要相当多的功能,即使在iPhone 4上也是如此).
大多数人看起来都很好.我不是,它真的让我感到烦恼 - 以及我的应用程序呈现方式,用户会非常困惑,他们第一次点击文本字段时几秒钟都没有发生任何事情.
谷歌搜索引出了一个解决方案 - 不幸的是,从iOS 4开始这是无效的(见这里).
我不希望这个解决方案很容易找到,如果我可以直接给我一个赏金.如果有人想出解决方案,我会非常激动.解决方案需要做的就是在用户不知情的情况下加载键盘.
任何想法都表示赞赏.完整的工作代码(适用于iOS 4和5)值得赏心悦目(即使赏金必须在以后出现!).
如果找到解决方案,我计划创建一个自包含的"KeyboardPreloader"类,人们可以将其放入他们的项目中,并使用一行代码预加载键盘:)
我试图平滑地制作一个具有自动布局约束的桌面视图.我在我的.h中引用了约束"keyboardHeight",并在IB中将其链接起来.我想要做的就是在弹出窗口时用键盘为表格视图设置动画.这是我的代码:
- (void)keyboardWillShow:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
NSTimeInterval animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect keyboardFrame = [kbFrame CGRectValue];
CGFloat height = keyboardFrame.size.height;
[UIView animateWithDuration:animationDuration animations:^{
self.keyboardHeight.constant = -height;
[self.view setNeedsLayout];
}];
}
Run Code Online (Sandbox Code Playgroud)
事情是动画块是瞬时的,我看到在键盘完成动画之前出现了空格.所以基本上我看到视图的白色背景,因为键盘是动画.只要键盘是动画,我就无法使动画持续.
我接近这个错误的方式吗?提前致谢!
uikeyboard ×10
ios ×8
objective-c ×3
swift ×3
uitextfield ×2
autofocus ×1
autolayout ×1
cocoa-touch ×1
iphone ×1
javascript ×1
performance ×1
uiresponder ×1
uitextview ×1
uitoolbar ×1
xamarin.ios ×1
xcode6 ×1
xcode7 ×1