如何在 UIWebView 上的键盘上方显示工具栏 [关闭]

Posted

技术标签:

【中文标题】如何在 UIWebView 上的键盘上方显示工具栏 [关闭]【英文标题】:How to show Toolbar above Keyboard on UIWebView [closed] 【发布时间】:2016-09-01 12:44:15 【问题描述】:

我有 Webview,下面有一个工具栏。当键盘出现时,我想在键盘顶部显示工具栏。如何做到这一点?

【问题讨论】:

取决于您如何定义布局。如果您使用的是自动布局,那么我猜您有一个约束将工具栏的底部粘贴到主视图的底部。然后您可以在键盘出现时更改此约束的常量。如果您使用的是纯框架,您可以在键盘出现时更改工具栏的 y 原点。要检测键盘何时出现/下降,请参阅:***.com/a/4374515/3844377 我正在使用自动布局。你能指导一下当键盘出现时如何改变约束吗? How to add ToolBar Above Keyboard?的可能重复 在 UIWebview 上 inputAccessoryView 是只读的。 【参考方案1】:

以下是实现您想要的基本架构:

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end

@implementation ViewController

- (void)viewDidLoad 
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver: self
                                             selector: @selector(keyboardDidShowNotification:)
                                                 name: UIKeyboardDidShowNotification
                                               object: nil];

    [[NSNotificationCenter defaultCenter] addObserver: self
                                             selector: @selector(keyboardDidHideNotification:)
                                                 name: UIKeyboardDidHideNotification
                                               object:nil];



-(void) keyboardDidShowNotification: (NSNotification * ) notification 

    NSDictionary *dict   = [notification userInfo];
    CGRect keyboardFrame = [dict[UIKeyboardFrameEndUserInfoKey] CGRectValue];

    self.view.frame = CGRectMake(0,0,
                                 self.view.frame.size.width,
                                 keyboardFrame.origin.y);



-(void) keyboardDidHideNotification: (NSNotification * ) notification 
    self.view.frame = [UIApplication sharedApplication].keyWindow.frame;


-(void) dealloc
    [[NSNotificationCenter defaultCenter] removeObserver:self];


@end

希望对你有帮助。

【讨论】:

【参考方案2】:

我没有代码示例,但我可以用文字给出提示。 您需要为工具栏和屏幕底部(或放置它的任何位置)之间的高度创建一个NSLayoutConstraint。 然后在键盘出现后,您需要计算键盘的高度并调整工具栏高度的布局约束,使其高于键盘。然后在键盘关闭的时候再改回来。

希望对您有所帮助!

【讨论】:

以上是关于如何在 UIWebView 上的键盘上方显示工具栏 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

调整键盘大小时的 UIWebView 问题

UIScrollView里面的UIWebView上面的UIToolbar

工具栏不会显示在键盘上方

在 ios 键盘上方显示建议工具栏

在键盘上方添加 UITextField

当用户在 UIWebView 中点击时,默认键盘如何出现?