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