如何在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