我正在將視圖控制器作爲模式呈現。該視圖控制器具有通過IB連接的多個UITextField。UITextField不會退出第一響應者?
我的問題是當按下返回鍵時,委託方法被調用,但由於某種原因,對給定textField的resignFirstResponder調用不是。即使我在textFieldShouldReturn委託方法中將消息打印到控制檯,它也會打印出來,但它會拒絕調用resign方法。
在shouldReturn委託方法我只有:
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
這真的從來沒有發生在我身上,它只是根本不會resignFirstResponder。正如我之前提到的,我可以將一個打印輸出到控制檯,只是爲了驗證shouldReturn方法是否被調用,並且確實如此。
我也試過這只是爲了看看委託是否已設置,它確實對UITextField行爲進行了更改。
-(void)textFieldDidBeginEditing:(UITextField *)textField {
[textField setTextAlignment:UITextAlignmentCenter];
}
這個問題真的讓我感到困惑。即使我試圖直接在文本字段上調用resignFirstResponder,它也不會關閉鍵盤。
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
if ([textField isEqual:self.productTextField]) {
NSLog(@"Product textfield");
[self.productTextField resignFirstResponder];
} else if ([textField isEqual:self.quantityTextField]) {
NSLog(@"Quantity textfield");
}
return YES;
}
這兩個日誌都與它們各自的文本字段一起工作,並分別打印出相應的消息。但是直接傳遞文本字段時調用該方法仍然沒有做任何事情。
找到了答案,顯然,UIPresentationFormSheet不允許你擺脫鍵盤。我嘗試了一種不同的表現風格,它工作。 @Cal,感謝您的question。
您可能只想在這裏使用'textField == self.productTextField'而不是'[textField isEqual:self.productTextField]'(對於另一個類似)。要麼你有一個對同一個實例的引用,要麼你沒有......在當前控制器的範圍內,當你處理的實例只有一個實例存在時,相等並不意味着太多。 –
我將標籤分配給所有文本框設置它們,並添加一個檢查標籤,而不是[textField isEqual:self.productTextField] – StudentX