我有一些UITextView
的实例,我希望这个textView
在显示键盘时占据所有空的垂直空间。问题是我不知道键盘会占用什么高度,因为它在iOS 8中具有预测条,并且当键盘已经显示时,用户可以更改其实际高度。我不想更改textView
的{{1}}。我对那个酒吧很好,只是想以正确的方式处理它。
所以问题是:有没有可能知道这个酒吧是否可见?有没有触发用户滑动以显示/隐藏此栏?
提前致谢。
答案 0 :(得分:2)
您可以在UITextView上将设置autocorrectionType更改为UITextAutocorrectionTypeNo(或在IB中更正为NO)禁用自动更正以及iOS 8中的预测文本栏。似乎没有办法仅禁用预测栏
await InitializePartsAsync();
await InitializeTrackAsync();
修改强>
答案 1 :(得分:1)
您可以通过添加观察者来获得键盘高度:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillChange:", name: UIKeyboardDidChangeFrameNotification, object: nil)
//Method
func keyboardWillChange(notification: NSNotification){
println(notification.userInfo?.description)
}
答案 2 :(得分:1)
当用户滑动以显示/隐藏UIKeyboard的栏(预测栏)时,您可以处理,
第一步
在viewdidLoad()
中声明键盘通知并声明全局变量kbSize
float kbSize;
- (void)viewDidLoad
{
kbSize=0.0;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShowNotification:) name:UIKeyboardWillShowNotification object:nil];
--- rest of your code here---
}
第二步
现在在keyboardWillShowNotification()方法中执行以下操作
#pragma mark - Notifications
- (void)keyboardWillShowNotification:(NSNotification *)aNotification{
NSDictionary *infos = aNotification.userInfo;
NSValue *value = infos[UIKeyboardFrameEndUserInfoKey];
CGRect rawFrame = [value CGRectValue];
CGRect keyboardFrame = [self.view convertRect:rawFrame fromView:nil];
if(kbSize==0.0)
{
kbSize=keyboardFrame.size.height;
NSLog(@"prediction bar is visible");
}
else if(keyboardFrame.size.height<kbSize)
{
NSLog(@"prediction bar is not visible");
--- rest of your code here, how you want to change your view when bar is not visible ---
}
else
{
NSLog(@"prediction bar is visible");
--- rest of your code here, how you want to change your view when bar is visible ---
}
}
<强>结论: - 强> 由于只要用户使用您的文本字段进行某些编辑,或者每当用户将滑动以隐藏或显示预测栏时,都会触发keyboardWillShowNotification。
所以我们只需要在keyboardWillShowNotification
触发时检查键盘的高度,所以如果用户滑动栏以隐藏,那么键盘高度将自动降低,我们已经将键盘的高度存储在变量{ {1}},我们只需检查当前键盘的高度是否小于存储的kbSize
。因此,通过这种方式,我们可以在运行时检查条是否可见,或者用户滑动以隐藏条。
答案 3 :(得分:0)
就我而言,问题是我没有考虑底部安全边距,我不得不减去底部安全边距以在出现键盘时正确设置内容大小。可能会帮助某人在无法预测的情况下计算键盘高度。
let window = UIApplication.shared.keyWindow
bottomInsets = window?.safeAreaInsets.bottom ?? 0