- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我试图在出现键盘时向上滚动我的 TextView 。我正在尝试按照 Apple 自己的教程在 https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html 进行操作。 .我使用的不是 ScrollView 和框架,而是使用自动布局,但总体思路是相同的(订阅键盘通知,并相应地为布局约束设置动画)。但是,当我显示键盘时, TextView 和键盘之间存在间隙:(这是土耳其键盘的屏幕截图,但所有安装的键盘(包括自定义键盘)都存在相同的间隙,标记为红色)。 (iPhone 6 Plus 的屏幕截图,但其他屏幕尺寸也存在此问题)
我看过 can't get correct value of keyboard height in iOS8我尝试同时使用 UIKeyboardFrameEndUserInfoKey
和 UIKeyboardFrameBeginUserInfoKey
但它们都会导致相同的差距。我试过附加 UIKeyboardWillShowNotification
和 UIKeyboardDidShowNotification
但我仍然遇到同样的问题。我认为差距与 iOS 8 上某些键盘的建议有关,但当建议不存在时,它不应该报告带有建议的键盘大小。
这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self registerForKeyboardNotifications];
}
- (void)registerForKeyboardNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeShown:)
name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWillBeShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGRect kb = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
float height = kb.size.height;
sendZoneBottomConstraint.constant = height;
[UIView animateWithDuration:.2 animations:^{
[self.view layoutIfNeeded];
}];
}
// Called when the UIKeyboardWillHideNotification is sent
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
sendZoneBottomConstraint.constant = 0;
[UIView animateWithDuration:.2 animations:^{
[self.view layoutIfNeeded];
}];
}
sendZoneBottomConstraint
是最底部 View 到底部布局指南的底部间距。
更新:我已经尝试将键盘矩形从窗口坐标更改为我的 View 坐标,但没有任何改变。这是我尝试过的:
CGRect kb = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
kb = [self.view.window convertRect:kb toView:self.view];
float height = kb.size.height;
更新,第 2 卷:我还看到了 iOS 8 Orientation change: Keyboard frame does not display correctly但我在 iPhone 5s iOS 7.1 模拟器上也遇到了这个问题,所以这不是 iOS 8 独有的问题。我怎么解决这个问题?我绝对不想在 iOS 8 世界中硬编码任何键盘高度值。
更新,第 3 卷:我还尝试过使用英文键盘打开和关闭建议。它仍然相对于键盘的总大小出现,所以它与建议/自动完成 View 无关:
最佳答案
也许您正在使用标签栏 Controller ,如果是,那么当您在显示键盘后为 View 留白时,计算没有标签栏高度的边距底部。
您可以使用以下方法找到标签栏高度:
self.tabBarController?.tabBar.frame.height
关于iOS 键盘高度在 UIKeyboardWillShowNotification/上返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806272/
我想创建一个与 iPhone 的短信应用程序(消息)完全相同的 ChatView。我正在以编程方式执行此操作,并尝试使用键盘向上移动 textView 。我想在 UIKeyboardWillShowN
这是我的应用程序的流程。第一 View -> 第二 View -> 第三 View 在第三个 View 中,当我单击 tableView 的任何一行时,会显示一个 UIView,它有一个仅接受数字的
这是我的代码: -(void)setViewMovedUp:(BOOL)movedUp { [UIView beginAnimations:nil context:NULL]; [UI
我不知道为什么动画在 UIKeyboardDidShowNotification 事件中工作正常但在 UIKeyboardWillShowNotification 事件中不工作。 代码如下所示: 注释
我检测到键盘何时会显示以下代码。但是,当我使用 pushViewController 推送到另一个屏幕并在该屏幕中打开键盘时,将调用 keyboardWillShow!这真的正确吗? [[NSNoti
我正在使用 UIKeyboardWillShowNotification 和 UIKeyboardWillHideNotification 来处理键盘。 这是显示键盘时调用的函数: -(void) k
我在主视图 Controller 的 viewWillAppear:animated 中添加了以下代码。 [[NSNotificationCenter defaultCenter] addObserv
下面的代码(抱歉太长了)在 iOS 4.3(也可能是其他版本)下显示了一个奇怪的行为。在这个例子中,有三个 UITextField具有三个不同大小的键盘。如果您开始编辑一个文本字段,然后触摸“返回”关
我试图在出现键盘时向上滚动我的 TextView 。我正在尝试按照 Apple 自己的教程在 https://developer.apple.com/library/ios/documentation
在我的 iOS 应用程序中,我有几个可以处理用户输入的 UIElement:文本字段、可编辑的 webview 等。每次我在键盘上向这些 UIElement 中写入内容时(显然)会出现。在它发生之前,
我正在使用 UIKeyboardWillShowNotification 来了解何时显示键盘并调整我的 UIWebView 的大小,以便它不会隐藏在键盘后面。 奇怪的是,当我在 NSNotificat
我有一个项目,其中包含一个 UIScrollView 和其中的许多 UITextField。 我第一次选择 UITextField 时,调用了 UIKeyboardWillShowNotificati
我发现 UIKeyboardWillShowNotification和 UIKeyboardDidShowNotification当未停靠/拆分键盘出现在 iOS 5 中时不会生成.例如,点击文本字段
我在 UIView 上有多个文本字段。 我放弃了 textFieldShouldBeginEditing 方法中的先前文本字段,其中执行了以下事件序列 收到与隐藏前一个字段的键盘的字段相对应的 UIK
我尝试在应用程序中使用自定义键盘,但在尝试将其限制为一个特定的 UITextField 时遇到问题。 我的代码基于 this Xcode project (最初发现于 this blog )。该代码将
我注意到一个令人惊讶的行为:当我在收到 UIKeyboardWillShowNotification 或 UIKeyboardWillHideNotification 后更改 UIView 的框架时,
我正在使用以下代码根据键盘移动为 View 的位置设置动画。该代码在 iOS 7 下运行良好,但在 iOS 8 下会导致奇怪的行为: [[NSNotificationCenter defaultCen
在 iOS 11 beta 7 上测试我的应用程序 - 如果我的 UIViewController. 代码看起来像这样(从 iOS7 开始工作): - (void)handleNotification
我的 View 中有几个 UITextField(每个都在一个 UITableViewCell 中)。当从任何文本字段触发键盘时,我需要制作一些动画,主要是更改 UITableView 的框架。当键盘
在最近更新 Xcode 之后,这段以前可以工作的代码不再工作了。大多数 Selector(":") 都具有自动更正功能,但以下代码除外: override func viewDidLoad() {
我是一名优秀的程序员,十分优秀!