iOS,键盘预测栏可见性

时间:2015-05-27 08:54:54

标签: ios uikit uitextview uikeyboard

我有一些UITextView的实例,我希望这个textView在显示键盘时占据所有空的垂直空间。问题是我不知道键盘会占用什么高度,因为它在iOS 8中具有预测条,并且当​​键盘已经显示时,用户可以更改其实际高度。我不想更改textView的{​​{1}}。我对那个酒吧很好,只是想以正确的方式处理它。

所以问题是:有没有可能知道这个酒吧是否可见?有没有触发用户滑动以显示/隐藏此栏?

提前致谢。

4 个答案:

答案 0 :(得分:2)

您可以在UITextView上将设置autocorrectionType更改为UITextAutocorrectionTypeNo(或在IB中更正为NO)禁用自动更正以及iOS 8中的预测文本栏。似乎没有办法仅禁用预测栏

await InitializePartsAsync();
await InitializeTrackAsync();

enter image description here

修改

check this I think it is gonna be helpful

答案 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