我在这里使用了Apple文档中的演示代码:
http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW7
让我的视图根据正在编辑的文本字段相应地移动。它工作得很好,我的观点如我预期的那样移动,除了一件事。
我的问题是,我可以选择一个文本字段,它只会在我开始键入时向上移动视图,而不是在我实际选择文本字段时向上移动视图。
我实际上使用的是与文档中相同的代码(点击上面的链接)。非常令人沮丧,我看不出是什么原因造成的。谢谢。
这是逻辑看。
1)您需要一个Flag
值集,最初TRUE
ViewDidLoad
或viewWillAPpear
。假设isNeedToMove
是该标志值。
您需要在代码中实现这些方法,要使用它们,请不要忘记Adopt
UIViewcontroller.h class
中的协议UITextFieldDelegate
。
编辑:在这里,我已经修改了您在您的评论中提到的代码,您需要移动该UIView只是触摸TextFIeld
。请参阅下面的 SOme 代码的逻辑。
将目标添加到ViewDiodiLoad
中的TextField
- (void)viewDidload
{
[touchyTextField addTarget:self
action:@selector(yourDesiredMethod)
forControlEvents:UIControlEventTouchDown];
}
-(void)yourDesiredMethod
{
if(isNeedToMove)//this Flag Avoid The unnecessary move call.
{
//here call the method which Move The UIview
}
}
- (BOOL)textFieldShouldReturn:(UITextField*)textField
{
[textField resignFirstResponder];
//here call the method which move UIView to its actual position.
isNeedToMove= TRUE;
return YES;
}
我希望你能得到一些想法.
我也有这个麻烦。在keyboardWasShow中,Apple文档说:
if (!CGRectContainsPoint(aRect, activeField.frame.origin)
我使用过:
if (activeField == myTextField)
这是答案的长版本:移动位于键盘下方的内容