UITextField 停止响应触摸

UITextField Stops Responding To Touches

我有一个故事板,其中有一个 UIView,里面有两个 UITextField。当我导航回控制器时,UITextFields 不再响应触摸。我正在这样导航到控制器

UIViewController* controller = [self rootNavigationController].storyboard] 
instantiateViewControllerWithIdentifier:@"mycontroller"];

出于某种原因,一旦我这样做,他们就会停止响应。

就控制器而言,它只有几个IBOutlets

myController.h

@interface myController : UIViewController

@property (nonatomic,weak) IBOutlet UIView *mainView;
@property (nonatomic,weak) IBOutlet UITextField *field1;
@property (nonatomic,weak) IBOutlet UITextField *field2;

@end

myController.m

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:(BOOL)animated];
    [self.field1 becomeFirstResponder];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    self.field2.layer.borderColor =[[UIColor colorWithRed:4.0/255.0
                                                           green:108.0/255.0
                                                            blue:187.0/255.0
                                                           alpha:1.0] CGColor];
    self.field2.layer.borderWidth = 1.0;

    self.field1.layer.borderColor =[[UIColor colorWithRed:4.0/255.0
                                                           green:108.0/255.0
                                                            blue:187.0/255.0
                                                           alpha:1.0] CGColor];
    self.field1.layer.borderWidth = 1.0;
}

我在故事板上连接了 IBOutlets。

我已经在 mainView 上尝试了 cliptobounds。但是没用。

您使用以下代码执行的操作:

UIViewController* controller = [self rootNavigationController].storyboard] 
instantiateViewControllerWithIdentifier:@"mycontroller"];

您正在创建 mycontroller 的新实例。这就是为什么,正如您所说:“一旦我这样做,他们就会停止响应。”

因此,您的问题的解决方案不是创建前一个 viewController 的新实例,而是导航回去。这就是我的意思:

删除这个:

UIViewController* controller = [self rootNavigationController].storyboard] 
instantiateViewControllerWithIdentifier:@"mycontroller"];

然后插入以下内容:

[self.navigationController popViewControllerAnimated:YES];

希望对您有所帮助!! :)