【发布时间】:2015-08-24 10:56:45
【问题描述】:
我有一个“图层构建器”对象,它创建不同的视图并在初始化它们后返回它们。
问题是,每当我按下这些创建的视图之一时,键盘就会打开,我不明白为什么。
这是我的图层构建器的编码方式:
@interface LayerBuilder : NSObject <VENTokenFieldDelegate, VENTokenFieldDataSource, UITableViewDataSource, UITableViewDelegate>
VEN 的东西是我在 github 上找到的一个项目,我正在使用它,它有文本字段,以防万一。
还有一个图层构建器使用示例:
-(void) showEmailCompilationView
{
lb = [[LayerBuilder alloc] init];
[lb placeDetailsLayerOnView:self.view withContacts:TRUE withSubject:TRUE withLable:@"Mail"];
...
}
以及被调用的函数:
CGRect screenRect = [[UIScreen mainScreen] bounds];
int xOrig = screenRect.origin.x;
int yOrig = screenRect.origin.y;
int xWid = screenRect.size.width;
int yWid = TEXT_FIELD_HEIGHT;
if(ctcs)
{
yWid += TEXT_FIELD_HEIGHT + TEXT_VIEW_BOUNDRIES * 2;
}
if(subject)
{
yWid += TEXT_FIELD_HEIGHT + TEXT_VIEW_BOUNDRIES * 2;
}
UIView* viewToAdd = [[UITextView alloc] initWithFrame: CGRectMake(xOrig, yOrig, xWid, yWid)];
viewToAdd.backgroundColor = [UIColor redColor];
[view addSubview:viewToAdd];
return viewToAdd;
}
如你所见,没有什么花哨的。
现在,每当我按下这一层时,键盘就会打开,而不管这一层是一个简单的uiview,与键盘无关。
知道问题出在哪里吗?
【问题讨论】:
-
我没有使用过 VEN 的东西,但我的猜测是文本字段正在成为第一响应者。尝试从文本字段中退出第一响应者,或将其分配到其他地方。此外,如果可能,请从您的 LayerBuilder 类声明中删除 VEN 协议分配,并查看键盘是否仍然打开。这至少可以帮助您确定 VEN 是否是罪魁祸首。
-
@MDB983 但我正在构建的层不包含任何 VEN 东西。它只是创建了一个 UIVIEW,就是这样。而已。似乎返回的视图不应该打开任何键盘。我从类声明中删除了它,仍然发生
-
如前所述,当 uitextview 成为第一响应者时,键盘会打开。现在,我注意到您正在将 uitextview 转换为 uiview,也许这是您的问题,您这样做有什么原因吗?
-
@MDB983 谢谢!!!我猜我做错了,大多数都是从某个地方复制粘贴的东西。你搞定了:D 关心写这个作为答案,这样我就能接受它?
标签: ios uiview keyboard uitextfield uitextview