UITextField没有接收到触摸事件

时间:2013-04-04 11:19:19

标签: ios ipad uitextfield

我在复杂的视图层次结构中有一个UITextField。文本字段位于带有标签和文本字段的UIView中,例如,labelfield。

我可以在那里输入文字。

右上角有信息按钮。点击Info时,会加载模态视图控制器。从模态视图控制器返回时,UITextField变得无响应。我不能在那里打字。绘制并在屏幕上显示labelfiedl。

有趣的是,如果我按下确定按钮,会显示警告,然后文本字段变为活动状态。此外,在视图的顶部,有一些文本与用户交互启用,如果我点击并尝试选择文本,然后文本字段变为活动。似乎我必须在超级视图上做一些其他活动/触摸,然后文本字段变为活动状态。

为什么不在第一种情况下接收任何触摸事件?我在viewDieldApper方法中尝试使用textField.enabled,becomeFirstResponder,setNeedsDisplay,没有任何效果。

enter image description here

2 个答案:

答案 0 :(得分:3)

尝试以下方法......

  • 确保将文本字段添加到的超级视图作为子视图足够大以包含文本字段(即确保文本字段的任何部分都不在超级视图旁边。请检查所有视图)。

  • 确保textfield.use bringSubViewToFront:方法上方没有视图。

  • 尝试在延迟后启用使用互动

希望上述任何修复都能解决您的问题

答案 1 :(得分:0)

是在iPad上。所以当我按下kb键隐藏键盘,然后进入信息视图,然后返回时,文本字段接收触摸事件。

似乎,当键盘显示,并且动画将视图更改为信息视图时,视图大小和调整大小存在一些问题。

所以,我所做的是,当按Info键时,隐藏键盘(视图已调整大小),有0.3秒延迟隐藏键盘,然后我切换到Info视图。当我回来时,textfield接受了接触。

呼啦!这是一个肮脏的黑客,但我暂时找不到任何其他解决方案。

- (void) infoPressed {
    [self.view endEditing:YES];
    /* This is a hack to solve the issue that after coming back from the info screen, 
     the codefiled's textfield was irresponsive. */
    [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(gotoInfoScreen) userInfo:nil repeats:NO];
}

- (void) gotoInfoScreen {
    NSString* filePath = [[NSBundle mainBundle ] pathForResource:FILENAME_INFOTEXT_ACTIVATE ofType:@"html"];
    NSString* infoText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    UIViewController* vc = ...// [init vc with info text];
    vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:vc animated:YES];

}