Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 手动发布UIKeyboardDidShowNotification_Ios_Uiscrollview_Uitextfield_Nsnotificationcenter_Uikeyboard - Fatal编程技术网

Ios 手动发布UIKeyboardDidShowNotification

Ios 手动发布UIKeyboardDidShowNotification,ios,uiscrollview,uitextfield,nsnotificationcenter,uikeyboard,Ios,Uiscrollview,Uitextfield,Nsnotificationcenter,Uikeyboard,因为键盘隐藏了文本字段,所以我实现了这个。现在,我还建立了这样一种可能性:用户点击键盘上的下一个按钮,直接跳到下一个文本字段(在字段之间切换) 现在的问题是,如果仅使用becomeFirstResponder,视图不会滚动。键盘向上,但未触发UIKeyboardDidShowNotification,因此视图不会向上滑动 我是否可以伪造此类通知,以便通知中心发送UIKeyboardDidShowNotification 辞职第一响应者 成为第一响应者 我只能为C#提供解决方案(这就是为什么我先忽

因为键盘隐藏了文本字段,所以我实现了这个。现在,我还建立了这样一种可能性:用户点击键盘上的下一个按钮,直接跳到下一个文本字段(在字段之间切换)

现在的问题是,如果仅使用
becomeFirstResponder
,视图不会滚动。键盘向上,但未触发
UIKeyboardDidShowNotification
,因此视图不会向上滑动


我是否可以伪造此类通知,以便通知中心发送
UIKeyboardDidShowNotification

  • 辞职第一响应者
  • 成为第一响应者
  • 我只能为C#提供解决方案(这就是为什么我先忽略它):


    我在每个文本字段上设置了一些标记。然后我使用委托
    usernameText.ShouldReturn+=TextFieldShouldReturn
    调用我的方法
    textfield应该返回
    。此方法选择下一个文本字段。要跳转到下一个文本字段,您首先使用
    resignFirstResponder
    关闭键盘,然后使用
    becomeFirstResponder
    显示键盘。使用此代码调用
    UIKeyboardDidShowNotification
    ,就像用户点击文本字段(=模拟点击)一样。

    另一个选项是使用两个很棒的库。用于选项卡和移动视图


    如果您只想发送通知,我猜
    [[NSNotificationCenter defaultCenter]postNotificationName:UIKeyboardDidShowNotification object:self]
    应该可以正常工作。

    您需要添加一些关于如何使用这些点的说明。至少发布一个关于如何使用这些通知的示例。我更新了我的答案。对我来说,很清楚你是如何使用这些代码的。现在我添加了更多的代码(虽然是C#)来展示如何使用发布的解决方案。您的答案被标记为低质量。现在已经很完整了。谢谢你提到图书馆。问题是我需要一个单触式端口。。。我试图在您发布时发送通知,但我需要创建一个通知。此通知应与来自操作系统的通知相同。我不知道该怎么做
    UIKeyboardDidShowNotification
    是单触式的NSString。如何在此处创建通知?现在通知已触发。在我的方法中显示了
    keyboard
    我需要
    userInfo
    对象来获取键盘大小。手动发布通知会导致
    userInfo
    变为
    nil
    。这是什么原因?我该怎么做才能得到我的键盘尺寸?这是一个棘手的问题。也许在键盘第一次出现时保存大小?因此,请检查
    userInfo
    是否为
    nil
    ,如果不是,请保存大小,如果是,请使用存储的大小。这样,它将在键盘第一次出现时保存它,并在您手动发布通知时调用它。好的,这将是一个解决方法。谢谢你的想法。同时,您还必须了解方向是否发生了变化,并根据需要切换出值(高度/宽度)。但是如果你这样做的话,如果之前打开过键盘,你的方法就可以工作了(对于我来说,这是真的,因为之前有一个文本字段,这个字段需要在开始时滚动)。但现在我会坚持我的解决方案。我给你学分是因为它更直接地回答了我的问题。
    private bool TextFieldShouldReturn (UITextField textfield)
    {
        if (textfield.Tag == 1) {
            UIResponder nextResponder = this.View.ViewWithTag (2);
            textfield.ResignFirstResponder ();
            nextResponder.BecomeFirstResponder ();
        } else if(textfield.Tag == 2){
            textfield.ResignFirstResponder ();
            loginButton.SendActionForControlEvents (UIControlEvent.TouchUpInside);
        } else {
            // Not found, so remove keyboard.
            textfield.ResignFirstResponder ();
        }
    
        return false; // We do not want UITextField to insert line-breaks.
    }