UIWebView与contentEditable(html编辑),第一响应者处理?
发布时间:2020-12-14 18:59:23 所属栏目:资源 来源:网络整理
导读:我正在为一个应用程序制作一个html编辑器组件(在iOS 5.0中使用contentEditable的UIWebView),并且陷入如何处理UIWebView第一响应者状态 [webView isFirstResponder],[webView becomeFirstResponder]和[webView resignFirstResponder]似乎不起作用,我不知道如
|
我正在为一个应用程序制作一个html编辑器组件(在iOS 5.0中使用contentEditable的UIWebView),并且陷入如何处理UIWebView第一响应者状态
[webView isFirstResponder],[webView becomeFirstResponder]和[webView resignFirstResponder]似乎不起作用,我不知道如何使webView成为或者通过代码辞职 如果有人知道如何工作,我将非常感激,谢谢提前! 解决方法
这是我如何在UIWebView子类中覆盖这些方法(content是可编辑元素的id):
-(BOOL)resignFirstResponder {
[self setUserInteractionEnabled:NO];[self setUserInteractionEnabled:YES];
return [super resignFirstResponder];
}
// only works on iOS 6+
-(void)becomeFirstResponder {
self.keyboardDisplayRequiresUserAction = NO; // set here or during initialization
[self stringByEvaluatingJavaScriptFromString:@"document.getElementById('content').focus()"];
}
-(BOOL)isFirstResponder{
if ([[self stringByEvaluatingJavaScriptFromString:@"document.activeElement.id=='content'"] isEqualToString:@"true"]) {
return YES;
}
else {
return NO;
}
}
键盘显示后,isFirstResponder将返回true(例如,它将在UIKeyboardWillShowNotification处返回false) 如果这是一个问题,另一种检查UIWebView是否是第一个响应者的方法如下: +(BOOL)isFirstResponder:(UIView *)v{
for (UIView *vs in v.subviews) {
if ([vs isFirstResponder] || [self isFirstResponder:vs]) {
return YES;
}
}
return NO;
}
-(BOOL)isFirstResponder{
return [[self class] isFirstResponder:self];
}
这样,即使在键盘动画完成(显示或隐藏)之前/之后,返回值也将为YES. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
