[英]UITextField within UIView not responding to user interaction
这是我的情景:
我的StoryBoard中有一个UIViewController
用于我的映射功能。 我正在添加Google地图视图(GoogleMaps iOS 1.3.1),例如:
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
longitude:151.20 zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectMake(0, 49, 320, 450) camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
我创建了一个自定义视图:MapTopBar.xib。 简单地说,它是一个带有UIImageView
(背景)和UITextField
&Button的UIView
。 它有一个支持类文件,并且已设置了所有UITextFields属性(委托,出口等)。
我将我的自定义视图添加到我的Map VC中,如:
UIView *topBar = [[MapTopBar alloc] initWithFrame:CGRectMake(0, 0, 320, 49)];
[self.view addSubview:topBar];
我的自定义视图正被添加到主视图中,但UITextField
未接收任何触摸事件。 键盘没有显示,字段中没有光标,没有。 好像有什么东西掩盖了它,不允许任何用户交互。 可以按下它旁边的按钮并正常工作。
我尝试过这么多种方式(以编程方式创建整个topBar视图,以编程方式添加文本字段),无论如何,文本字段都不会获得用户交互。
我启用了用户交互,确保没有视图位于文本字段之上,全部为null。 我觉得我错过了一些简单的事情。 为什么我不能与我的文本域互动?
另外:如果它是相关的,上面的代码是在超级调用之前从viewDidLoad
调用它自己的子代码。
UITextField似乎超出了其父视图的范围,并且没有被剪裁。 (或者父视图超出其父视图的范围......等等)
在viewDidAppear中,使用调试器或NSLog以UITextField结尾的视图层次结构。 检查以确保每个视图的帧完全位于其父视图中。
像这样的东西应该可以识别任何帧外视图:
UIView* v = _myTextField;
while ( v.superview != nil )
{
NSLog( @"%@ - %@", NSStringFromClass([v class]), CGRectContainsRect( v.superview.bounds, v.frame ) ? @"GOOD!" : @"BAD!" );
v = v.superview;
}
我有同样的问题! 你找到了解决方法吗? 似乎UITextField的框架一切正常。 出于调试目的,我在UITextField上面放了一个按钮,这个按钮能够触及。 也许这笔交易与Google地图视图处理触摸或ui绘图的方式有关?
确保将文本字段插入内容视图。
我遇到了同样的问题,并在此处找到了解决方案https://stackoverflow.com/questions/20015266
似乎GMSMapView有一个BlockingGestureRecognizer,它阻止了与文本字段的交互。 如果禁用此功能,请记住父视图将从手势中接收事件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.