Xcode:iPad键盘故障(没那么简单)
我正在制作一个应用程序,它使用许多文本字段。其中大多数都在静态表视图中。我使用分割视图应用程序模板。从左面板中选择的每个类别都在右面板的第二个视图中呈现故事板场景。 我只想去掉带有“done”按钮的键盘,但是在这种情况下,我尝试过的在简单视图上工作的一切都无法工作。 你能帮我解决这个问题吗 p、 我试图在呈现的故事板场景的实现文件中关闭键盘。我应该在分割视图控制器的细节场景中做些什么吗 以下是我的场景代码:Xcode:iPad键盘故障(没那么简单),xcode,uitableview,view,keyboard,ipad,Xcode,Uitableview,View,Keyboard,Ipad,我正在制作一个应用程序,它使用许多文本字段。其中大多数都在静态表视图中。我使用分割视图应用程序模板。从左面板中选择的每个类别都在右面板的第二个视图中呈现故事板场景。 我只想去掉带有“done”按钮的键盘,但是在这种情况下,我尝试过的在简单视图上工作的一切都无法工作。 你能帮我解决这个问题吗 p、 我试图在呈现的故事板场景的实现文件中关闭键盘。我应该在分割视图控制器的细节场景中做些什么吗 以下是我的场景代码: .h #import <UIKit/UIKit.h> @in
.h
#import <UIKit/UIKit.h>
@interface AfoEsoda : UITableViewController <UITextFieldDelegate>{
}
@property (strong, nonatomic) IBOutlet UITextField *merismataTF;
-(IBAction)hideKeyboard:(id)sender;
@end
.m
@synthesize merismataTF;
- (void)viewDidLoad
{
[super viewDidLoad];
merismataTF.delegate=self ;
}
//---------Hide Keyboard-------------------
//Tried but didn't work
-(IBAction)hideKeyboard:(id)sender {
[merismataTF resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
//Of course i do not use both methods at the same time.
.h
#进口
@AFOEODA接口:UITableViewController{
}
@性质(强,非原子)IbUitextField*Merismatf;
-(iAction)隐藏板:(id)发送方;
@结束
M
@合成分生组织;
-(无效)viewDidLoad
{
[超级视图下载];
授权代表=自我;
}
//---------隐藏键盘-------------------
//我试过了,但没有成功
-(iAction)隐藏板:(id)发送方{
[Merismatf辞职第一响应者];
}
-(BOOL)textField应返回:(UITextField*)textField{
[textField resignFirstResponder];
返回YES;
}
//当然,我不会同时使用这两种方法。
编辑:
当我将textfield的委托设置为self时,会出现以下崩溃:
尝试实现文本字段的委托,将委托设置为self,并使用委托的方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
设置
另一种方法是遍历视图的所有子视图,如果是文本字段,请退出第一响应者:
for(int i=0;i<self.view.subviews.count;i++)
{
if([[self.view.subviews objectAtIndex:i] isKindOfClass:[UITextField class]])
{
if([[self.view.subviews objectAtIndex:i] isFirstResponder])
[[self.view.subviews objectAtIndex:i] resignFirstResponder];
}}
然后,如果需要某一行的textField值,只需使用:
UITextField *someTextField = (UITextField *)[[tableView cellForRowAtIndexPath:indexPath].contentView viewWithTag:1];
NSLog(@"textField.text = %@", someTextField.text);
当我按你的方式操作时,当我触摸文本字段时,它会崩溃。见上面的截图。请将标题和实现文件添加到帖子中。我刚刚做了。谢谢你的时间!看看另一种方法是否适合你。请同时添加cellForRow路径method@PantelisProios我已经更新了我的答案,现在应该可以了。但是,我必须说,创建自定义单元格的最佳方法是将其子类化,然后将该子类用于您的单元格。这更容易、更安全,而且是一种更好的做法。我尝试了“辞职第一响应者”和“textfieldshouldreturn”。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ static NSString *cellIdentifier = @"My cell identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UITextField *newTextField;
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
newTextField = [[UITextField alloc] initWithFrame:CGRectMake:(0,0,25,25)];
newTextField.tag = 1;
newTextField.delegate = self;
[cell.contentView addSubview:newTextField];
}
else
newTextField = (UITextField *)[cell.contentView viewWithTag:1];
UITextField *someTextField = (UITextField *)[[tableView cellForRowAtIndexPath:indexPath].contentView viewWithTag:1];
NSLog(@"textField.text = %@", someTextField.text);