Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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 iPhone-在键盘显示之前获取键盘高度_Ios_Iphone_Keyboard_Height_Uikeyboard - Fatal编程技术网

iOS iPhone-在键盘显示之前获取键盘高度

iOS iPhone-在键盘显示之前获取键盘高度,ios,iphone,keyboard,height,uikeyboard,Ios,Iphone,Keyboard,Height,Uikeyboard,我知道我可以从键盘上的UIKeyboardFrameEndUserInfoKey获取UIKeyboard高度,当它成为第一响应者时,会触发keyboardWillShow和keyboardDidShow通知 但是,我希望在这些事件发生之前知道键盘的预期高度,以便在视图控制器的viewDidLoad中设置某些设计元素 由于设备在变化,而新的拼写更正栏改变了键盘高度,我不想硬编码高度 是否有人知道如何从键盘获得预期高度,并考虑到键盘是否具有自动更正功能等 您可以通过以下方式执行: - (void)v

我知道我可以从键盘上的UIKeyboardFrameEndUserInfoKey获取UIKeyboard高度,当它成为第一响应者时,会触发keyboardWillShow和keyboardDidShow通知

但是,我希望在这些事件发生之前知道键盘的预期高度,以便在视图控制器的viewDidLoad中设置某些设计元素

由于设备在变化,而新的拼写更正栏改变了键盘高度,我不想硬编码高度


是否有人知道如何从键盘获得预期高度,并考虑到键盘是否具有自动更正功能等

您可以通过以下方式执行:

- (void)viewDidLoad {
[super viewDidLoad];
[self initializeTextView];
} -(void)initializeTextView{

// Listen for keyboard appearances and disappearances
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardDidShow:)
                                             name:UIKeyboardDidShowNotification
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardDidHide:)
                                             name:UIKeyboardDidHideNotification
                                           object:nil];

myColoredTextview  = [[UITextView alloc]initWithFrame:CGRectMake(0, 20, 300, 100)];
myColoredTextview.delegate = self;
[self.view addSubview:myColoredTextview];
myColoredTextview.backgroundColor = [UIColor lightGrayColor];
}

- (void)keyboardDidShow: (NSNotification *) notif{
// Do something here
 NSLog(@"show:%@",notif);
 NSDictionary *userInfo = [notif valueForKey:@"userInfo"];
 CGRect kbFrame = [[userInfo objectForKey:@"UIKeyboardFrameBeginUserInfoKey"] CGRectValue];
 NSLog(@"keboardHeight:%f",kbFrame.size.height);
}


}

您需要它的具体用途是什么?请具体说明,因为您几乎肯定希望采用不同的方法。请注意我的问题中的一部分,即“我希望在这些事件之前知道键盘的预期高度,以便我可以在视图控制器的viewDidLoad中设置某些设计元素”。进一步说:我有一些元素是根据键盘的高度来布置的,但不是根据键盘的高度来布置的。你不能事先知道。屏幕上每个文本字段或文本视图的键盘高度可能不同。一个可能有一个
inputAccessoryView
,另一个可能没有。基本上,如果我在IB中设置一个textfield/视图,或者以编程方式设置,最好有textfield.inputView.frame.size.height这样的内容。与此同时,我已经解决了一些变通办法,但它们最终导致我的设计看起来与我想要的不完全一样,因为quicktype栏在iOS8之前不存在,谁知道将来会发生什么变化。。我可能会考虑做出响应性的调整来决定设备和操作系统,但这很烦人,而且还会受到苹果未来变化的影响
- (void)keyboardDidHide: (NSNotification *) notif{
// Do something here
NSLog(@"hide:%@",notif);