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