【问题标题】:Objective c keyboard opens unwillinglyObjective c 键盘不情愿地打开
【发布时间】: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


【解决方案1】:

正式的评论;

将 UITextField 转换为 UIView 会导致键盘打开。

谢谢

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2017-09-11
    • 2018-03-25
    • 2016-09-13
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    相关资源
    最近更新 更多