【问题标题】:Can not Hide Keyboard with SLComposeServiceViewController无法使用 SLComposeServiceViewController 隐藏键盘
【发布时间】:2015-12-16 05:33:17
【问题描述】:

除了表格视图中的配置之外,我的共享扩展不需要任何用户输入,因此我试图在 Safari 中显示视图时隐藏键盘。我可以在模拟器中很好地运行我的代码,但是当我在我的设备上进行测试时,我的 Share Extension 没有启动并且 Safari 挂起。

我尝试了几种方法来阻止键盘启动

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.textView.text = @"\n Place Holder Text";
    self.textView.editable = NO;
}

同样,我在 loadView 中尝试过,因为那是 SLComposeServiceViewController 设置 textView 和 textView 委托。

-(void)loadView{
    [super viewWillAppear:animated];
    self.textView.text = @"\n Place Holder Text";
    self.textView.editable = NO;
}

只是为了好玩

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{

    return NO;
}

所有这些都可以在模拟器上运行,但不能在我的设备上运行。

会发生什么?

我(或 Safari)缺少某种通知或观察者

【问题讨论】:

  • 如果我没记错的话,该类是由 iOS 生成的,具有只读的 textField,因此将其 editable 状态设置为 NO 可能不会有任何帮助。我想你可以尝试resignFirstResponder 当扩展支持首先弹出时。但是,如果您不想使用 SLComposeServiceViewController 提供的开箱即用解决方案,那么继承 UIViewController 并创建自己的自定义视图控制器将是最简单的方法。

标签: ios objective-c cocoa-touch slcomposeviewcontroller ios8-share-extension


【解决方案1】:

您只需将代码放入“viewDidAppear”函数中。 对我来说效果很好。

-(void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.textView setText:@" Place Holder Text"];
    [self.textView setEditable: NO];
}

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 2019-02-22
    • 2013-11-04
    • 2023-04-03
    • 2016-05-04
    • 1970-01-01
    • 2010-10-01
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多