gpt4 book ai didi

iphone - - (void)keyboardWasShown 切换到另一个 UITextField 时未调用

转载 作者:行者123 更新时间:2023-12-03 19:23:15 26 4
gpt4 key购买 nike

我遇到了一个我不明白的奇怪问题。我有一个带有几个 UITextField 对象的 UIScrollView 。当我切换到 View 时,我将第一个 UITextField 设置为firstresponder,并且由于注册了 View 的 UIKeyboardDidShowNotification,所以 KeyboardWasShown 方法被调用。奇怪的是,当我触摸下一个 UITextField 时,不会调用 KeyboardWasShown 方法。我不明白这一点,因为苹果的文档说“如果你的界面有多个文本字段,用户可以在它们之间点击来编辑每个文本字段中的值。但是,当发生这种情况时,键盘不会消失,但系统仍然会消失每次在新文本字段中开始编辑时都会生成 UIKeyboardDidShowNotification 通知。”我的代码也是直接从苹果的文档中复制的,它工作正常,但它只在第一次被调用。我错过了什么?

- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardDidHideNotification object:nil];
}

- (void)keyboardWasShown:(NSNotification *)aNotification {
//if (keyboardShown) return;
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue].size;
CGRect bkgndRect = activeField.superview.frame;
bkgndRect.size.height += kbSize.height;
[activeField.superview setFrame:bkgndRect];
[scrollView setContentOffset:CGPointMake(0.0, activeField.frame.origin.y) animated:YES];
keyboardShown = YES;

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
self.navigationItem.rightBarButtonItem = doneButton;
[doneButton release];
}

最佳答案

每次您更改第一响应者时,不会发布此通知。为此,您必须实现 UITextField 或 UITextView 的委托(delegate)协议(protocol)(取决于您使用的内容)并从那里处理这些更改。如果键盘之前被隐藏,您只会收到显示键盘的通知。

关于iphone - - (void)keyboardWasShown 切换到另一个 UITextField 时未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com