我正在为一个应用程序制作一个html编辑器组件(在iOS 5.0中使用带有contentEditable的UIWebView),并且陷入了如何处理UIWebView第一响应者状态

[webView isFirstResponder],[webView becomeFirstResponder]和[webView resignFirstResponder]似乎不起作用,我不知道如何让webView成为或通过代码辞职

如果有人知道如何解决这个问题,我将非常感激,提前谢谢!

===============>>#1 票数:13

以下是我在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  
    // important note: in some situations (newer iOS versions), it is also required to first call `blur()` on the 'content' element, otherwise the keyboard won't show up as expected
    [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

===============>>#2 票数:2

我最近遇到了同样的问题,但是使用纯JavaScript解决了它。 实际上它不需要任何Objective-C First Responder相关方法。 我只是使用JavaScript来更改UIWebView的内容 - 根据需要定位HTML元素的contentEditable属性值。

例如,使用以下代码隐藏UIWebView可编辑内容调用的键盘:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('target').setAttribute('contentEditable','false')"];

希望这是有帮助的。 :)

===============>>#3 票数:0

以下是我在UIWebView子类中覆盖这些方法的方法(content是可编辑元素的id):

[_webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('content').focus()"];

但是,焦点去第一点而不是最后一点

===============>>#4 票数:-2

如果要隐藏键盘,请调用以下代码行。

//wView is your UIWebView

NSString *webText = [wView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
 [wView loadHTMLString:webText baseURL:nil];

===============>>#5 票数:-2

[webView loadHTMLString:[NSString stringWithFormat:@“%@”,htmlString] baseURL:nil]; 这适用于iOS> 4

  ask by Ismael translate from so

未解决问题?本站智能推荐:

2回复

在UIWebView中插入HTML

我尝试使用内容可编辑的UIWebView来制作一个RTF编辑器,因为UITextView不会得到任何充实。 我想知道如何以编程方式替换选择或插入HTML代码(例如,创建指向所选文本的链接,或实现搜索/替换功能)。 我试过了: 但这不起作用...您知道是否有解决方案吗? 谢谢,
2回复

输入新行时,如何获取插入符号在contentEditable div中的位置?

我正在使用UIWebview制作一个富文本编辑器,该编辑器使用contentEditable div。 我想获得插入符号的位置(以像素为单位)。 我已经搜索了很多,并且得到了下面的代码。 上面的代码在输入换行符之前效果很好。 sel.getRangeAt(0)返回null,因此该函
5回复

列表后的HTML5内容可编辑段落

我使用Google Chrome。 我需要一个非常小的HTML编辑器,并且找到了Simple Edit 。 非常小的编辑器,仅用于我的需要。 但是,...以及使用Content Editable的许多其他编辑器都有一个常见问题。 问题 创建列表后(在最后一个列表项上按回车两
1回复

哪个基于Web的HTML编辑器最能支持iPad?

现在,iOS 5上的Mobile Safari支持HTML5 contenteditable属性,我们终于可以对iOS用户使用HTML编辑器,例如YUI RTE , CKEditor或TinyMCE 。 此时,哪些HTML编辑器为iOS 5上的Mobile Safari提供了良好的支持?
4回复

以编程方式在可编辑的UIWebView中显示键盘

我的UIWebView加载可编辑内容的html内容。 我想让UIWebView聚焦并在UIWebView中显示键盘。 我使用[self.webview becomeFirstResponder] ,但是它不起作用。 有没有解决方法? 谢谢。
2回复

以编程方式处理uiwebview中的文本字段

我有一个带有文本字段和提交按钮的网页。 该网页已加载到UIWebView中。 如何以编程方式按下该网页的“提交”按钮? 或者,我将如何以编程方式使网页中的文本字段成为第一响应者并显示软键盘? 只是以编程方式重新创建与用户触摸网页上的文本字段相同的行为。 我想假设页面的来源未
1回复

需要多个视图来响应iPhone应用程序中的触摸事件

设置:我需要两个视图来响应触摸事件,并且它们彼此层叠在一起。 视图1在视图2之上。视图2是UIWebView。 视图1被子类化以捕获触摸事件。 我的问题是,如果我尝试从作为第一个响应者的View 1的事件处理程序中调用UIWebView事件处理程序(touchesBegan:和touc
5回复

在UIWebView中的contentEditable / designMode时自动滚动

我正在为我正在处理的iPhone应用程序尝试一个富文本编辑器(具有HTML导出功能),并决定使用iOS 5的designMode支持contentEditable / designMode 。 我已经遇到了一个问题,这个问题正在打破我的需求。 在UIWebView中编辑内容时,没有自动滚动跟
2回复

UITextSelection caretRect中的UIWebview contenteditable崩溃

我有一个UIWebview,用户可以编辑(iOS 6及更高版本)。 webView的userInteractionEnabled为YES,HTML的内容可编辑TRUE,如下所示: 单击文本行将弹出键盘。 然后,单击文本区域会导致Apple代码中某处崩溃: -[UITextI
1回复

具有contenteditable的UIWebview-上标和下标不起作用

我的webview具有contenteditable,并使用javascript进行富文本编辑。 它可以与下面的“ Bold”和“ Italic”等命令配合使用: 但是下面的“上标”和“下标”不起作用: 谁知道,在iOS下,我们在Mozilla中是否也有类似的Rich-Text