我已經創建了一個屏幕上有一個UITextField。當我得到一個EditingDidBegin事件時,我resignFirstResponder,帶上另一個textField的Popover,併爲該TextField調用BecomeFirstResponder。添加[myUITextField becomeFirstResponder];不提示鍵盤
當它運行時,我得到閃爍插入指針和X清除內容。雖然沒有鍵盤。主UIView設置爲UserInteractionEnabled:YES。
第一個UITextField的目標操作,它對它自己的看法。
[textField addTarget:self action:@selector(wantsToEditValue:) forControlEvents:UIControlEventEditingDidBegin];
目標操作選擇:
- (IBAction)wantsToEditValue:(id)sender {
// set notification so we can update from popover
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(saWriteValue:)
name:kRefreshFromPopover object:nil];
//we dont want the TagValue textfield to really be the first responder.
[textField resignFirstResponder];
[... setup popoverVC, and View. present popover...]
}
下面是創建第二的UITextField的代碼。此代碼是在VC的酥料餅..
- (void)viewDidLoad
{
if (IoUIDebug & IoUIDebugSelectorNames) {
NSLog(@"%@ - %@", [self description], NSStringFromSelector(_cmd));
} [super viewDidLoad];
[self createElementInputControl];
[self createWriteButton];
//We want the input Focus
[textFieldInput becomeFirstResponder];
//Resize our view to handle the new width
CGRect newViewSize = CGRectMake(self.view.frame.origin.x,
self.view.frame.origin.y,
writeButton.frame.origin.x + writeButton.frame.size.width + kWriteElementOffset ,
self.view.frame.size.height);
[self.view setFrame:newViewSize];
}
創建輸入碼:
-(void) createElementInputControl {
textFieldInput = [[UITextField alloc] initWithFrame:CGRectMake(kWriteElementOffset ,
kWriteElementHeightOffset,
kTagValueInputInitialWidth,
kWriteElementDefaultHeight)];
textFieldInput.borderStyle = UITextBorderStyleRoundedRect;
textFieldInput.clearButtonMode = UITextFieldViewModeWhileEditing;
textFieldInput.textAlignment = UITextAlignmentLeft;
[textFieldInput setDelegate:self];
[textFieldInput setKeyboardType:UIKeyboardTypeDefault];
// Set the value of the text
[textFieldInput setText:self.myTag.value];
CGSize textFieldInputSize = [textFieldInput.text sizeWithFont:textFieldInput.font];
//Set the Button Width
[textFieldInput setFrame:CGRectMake(textFieldInput.frame.origin.x, textFieldInput.frame.origin.y, textFieldInputSize.width + kTagValueInputWidthBuffer, textFieldInput.frame.size.height)];
[self.view addSubview:textFieldInput];
}
當我刪除了becomeFirstResponder代碼中,酥料餅拿出正常,雖然沒有閃爍的插入指針。我點擊字段,我得到插入指針,X清除內容按鈕,並且是一個鍵盤。
我想讓鍵盤顯示而不必點擊新的文本字段。
謝謝!
這是不是我的代碼的第一個版本的層次結構的一部分。它現在是視圖層次結構的一部分。我在ViewDidLoad中添加了[control becomeFirstResponder]。所以,因爲我可以看到控制,我會假設它在視圖層次結構中。將它添加到viewDidLoad將確保它在那個時候已經被添加。有了這個改變,它仍然無法正常工作。 – scooter133 2012-02-10 15:45:49
如何聲明textFieldInput?我想知道在您的呼叫成爲FirstResponder的時候它是否有效。 另外,你有沒有嘗試把createFirstResponder調用放在createElementInputControl裏面 – Rayfleck 2012-02-10 16:05:51
爲了清晰起見我改變了代碼,所以我不必包含更多的支持代碼。它的聲明如下:'UITextField * textFieldInput = [[UITextField alloc] initWithFrame ...',並且在將它添加到視圖後釋放textFieldInput,然後傳回指向它的指針,以便稍後可以訪問它。 becomeFirstResponder最初是在createElementInputControl中。 – scooter133 2012-02-10 17:00:40