如何在iPhone中触发完成按钮触摸?在iPhone中触发完成按钮触摸
我有一个异步任务,弹出我小tableView(将其添加到子视图)。当我的一个textField被关注时 - 显示键盘并覆盖我的tableView。
我试着在“textFieldShouldBeginEditing”中调用resignFirstResponder对焦点textField,但它没有帮助。所以我认为可能明确触发完成按钮将工作。
如何在iPhone中触发完成按钮触摸?在iPhone中触发完成按钮触摸
我有一个异步任务,弹出我小tableView(将其添加到子视图)。当我的一个textField被关注时 - 显示键盘并覆盖我的tableView。
我试着在“textFieldShouldBeginEditing”中调用resignFirstResponder对焦点textField,但它没有帮助。所以我认为可能明确触发完成按钮将工作。
您可以将完成按钮作为视图控制器的右导航按钮。
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneButtonPressed:)];
self.navigationItem.rightBarButtonItem = doneButton ;
[doneButton release];
执行doneButtonPressed:
方法如下。
-(void) doneButtonPressed:(id) sender
{
[myTextField resignFirstResponder];
}
我有很多的textFields。如何知道doneButtonPressed调用哪一个是活动的。顺便说一下,我输入textFieldShouldBeginEditing方法时保存了textField。当我的tableView强化我为这个字段调用resignFirstResponder,它不起作用。 – Misha
如果您不希望文本字段becomeFirstResponder或进行编辑,从textFieldShouldBeginEditing方法返回NO。
我从你的问题中了解到,当你在文本框中输入时,你的其他字段会被隐藏起来。为此,你需要为视图设置动画。我将为你编写代码。
在你的头文件中声明这个。
CGFloat animatedDistance;
而在你的.m文件把这段代码,你会不会面临当你开始编辑文本字段,以便使空间来查看您的字段的任何problem.Your视图会自动向上和向下滚动。 。
#pragma mark -
#pragma mark (Text Field Delegate Method)
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;
static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;
static const CGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;
static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 162;
CGRect textFieldRect;
CGRect viewRect;
textFieldRect =[addProScrollView.window convertRect:textField.bounds fromView:textField];
viewRect =[addProScrollView.window convertRect:addProScrollView.bounds fromView:addProScrollView];
CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
CGFloat numerator = midline - viewRect.origin.y - MINIMUM_SCROLL_FRACTION * viewRect.size.height;
CGFloat denominator = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * viewRect.size.height;
CGFloat heightFraction = numerator/denominator;
if (heightFraction < 0.0)
{
heightFraction = 0.0;
}
else if (heightFraction > 1.0)
{
heightFraction = 1.0;
}
UIInterfaceOrientation orientation =[[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait ||orientation == UIInterfaceOrientationPortraitUpsideDown)
{
animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
}
else
{
animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
}
CGRect viewFrame;
viewFrame= addProScrollView.frame;
viewFrame.origin.y -= animatedDistance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[addProScrollView setFrame:viewFrame];
[UIView commitAnimations];
}
-(void)textFieldDidEndEditing:(UITextField *)textField
{
if(textField.tag==0)
{
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
CGRect viewFrame;
viewFrame= addProScrollView.frame;
viewFrame.origin.y += animatedDistance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[addProScrollView setFrame:viewFrame];
[UIView commitAnimations];
}
}
就是这样。你现在就完成了运行你的代码。
干杯......
触发按钮按钮从来没有必要,它不会做任何你不能在代码中自己做的事情。另外,你的问题对我来说有点不清楚(可能只是我,对不起)。你是否想要辞职键盘,或者你是否试图移动键盘,使其不在tableView的方式? – sosborn
我正在尝试辞职键盘。 – Misha
http://stackoverflow.com/questions/274319/how-do-you-dismiss-the-keyboard-when-editing-a-uitextfield – sosborn