iPad键盘,UITextField,奇怪的行为
问题描述:
我有一个UITextField
,当键盘移入/移出时,它可以向上/向下移动视图。iPad键盘,UITextField,奇怪的行为
- (IBAction)moveUp;
- (IBAction)moveDown;
我通过“编辑确实开始”和下降“真的结束在退出”(这是我在某个线程发现这里的StackOverflow)移动视图了。
但是,当按钮(右下角)“隐藏键盘”被击中时,视图不会向下移动。 这显然确实回应了“编辑完成”。
奇怪的是,如果我还连接“编辑真的结束”来下移,方法下移将被调用2倍(并移至远了屏幕!)
如果我再diconnect-CONNECT“真的结束退出时“,该视图不会像以前那样点击”返回“按钮消失。
任何想法这里出了什么问题?
//斯特凡
答
而不是使用“编辑确实开始”和“编辑真的结束就退出”,这是由UIControl定义,我建议你用指定一个代表为您的文本字段,并使用textFieldDidEndEditing:由UITextFieldDelegate协议定义的方法。我相信这会在你想要的时候开火。
答
确保您连接到“退出结束”,而不是“编辑Sid结束”。这些名字有点混乱。
答
而不是连接您的方法来控制文本字段上的事件,您应该激发您的方法来响应两个通知,UIKeyboardDidShowNotification
和UIKeyboardDidHideNotification
。只需在-viewDidLoad
中将自己添加为这些通知的观察者,然后在-viewDidUnload
中删除自己。
- (void)viewDidLoad
{
[super viewDidLoad];
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(moveUp) name:UIKeyboardDidShowNotification object:nil];
[notificationCenter addObserver:self selector:@selector(moveDown) name:UIKeyboardDidHideNotification object:nil];
}
- (void)viewDidUnload
{
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter removeObserver:self name:UIKeyboardDidShowNotification object:nil];
[notificationCenter removeObserver:self name:UIKeyboardDidHideNotification object:nil];
}
还是一样的奇怪行为。我只是通过解决方法来解决它。我会打电话给textFieldShouldReturn:除了别的,只是辞去第一个响应者。所有其他必要的任务将在textFieldDidEndEditing中处理:因为无论如何都会调用它。但是,textFieldShouldReturn:必须可用!不会试图去理解它。现在它可以工作。 §$“!! @&! – Stef 2010-11-13 20:37:24