Xamarin.iOS:在编辑聊天窗口时,尝试在键盘上方移动底部工具栏(文本字段)

时间:2014-09-06 13:20:14

标签: ios xamarin.ios xamarin

我试图将工具栏(带有文本字段)放在键盘上方。最初,工具栏位于底部。

我尝试使用" inputAccessaryView"在文本字段上。单击文本字段后,工具栏刚刚消失。我知道如果我为它创建一个新工具栏,这将有效。但就像在聊天窗口中一样,我想要相同的文本字段/工具栏。

enter image description here

这是代码

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    NavigationItem.Title = "Name";
    ChatInput = new UITextField (new RectangleF(0,0,View.Bounds.Width - 104f,30f));
    Toolbar = new UIToolbar (new RectangleF(0, View.Bounds.Height - 44.0f, View.Bounds.Width, 44f));
    ChatInput.BorderStyle = UITextBorderStyle.RoundedRect;

    Toolbar.SetItems( new UIBarButtonItem[] {
        new UIBarButtonItem(UIBarButtonSystemItem.Refresh, (s,e) => {
            Console.WriteLine("Refresh clicked");
        })
        , new UIBarButtonItem (ChatInput){Style = UIBarButtonItemStyle.Bordered,Width = View.Bounds.Width - 104f}
        , new UIBarButtonItem(UIBarButtonSystemItem.Reply, (s,e) => {
            Console.WriteLine ("Reply clicked");
        })
    }, false);
    ChatInput.ReturnKeyType = UIReturnKeyType.Send;
    ChatInput.ShouldBeginEditing = delegate {
        ChatInput.InputAccessoryView = Toolbar;
        return true;
    };

    ChatInput.ShouldReturn = delegate {
        ChatInput.ResignFirstResponder();
        return true;
    };
    View.AddSubview (Toolbar);
}

1 个答案:

答案 0 :(得分:0)

我不知道是否有办法将工具栏固定在键盘顶部,但是当键盘弹出时,您可以创建某种方法来移动工具栏(编辑其.Frame属性)。我使用此方法移动整个UIScrollView。你可以找到我在这里使用的方法:(http://www.gooorack.com/2013/08/28/xamarin-moving-the-view-on-keyboard-show/)。

这可能不是最“干净”的解决方案,但如果正确实施,它就能完成它的工作。另一个优点是,如果你将整个“移动键盘”放在一个单独的类文件中,你可以在其他视图中重复使用它。

希望这会有所帮助。祝你好运!

爱和问候, 的Björn