【问题标题】:UISplitViewController detail-only inputAccessoryViewUISplitViewController 仅细节 inputAccessoryView
【发布时间】:2014-09-02 01:20:21
【问题描述】:

我试图在消息输入工具栏方面模仿 Apple 的 iMessage 应用程序。 Apple 有一个UIToolbar,它是它包含的UITextView 的输入附件视图,也是实际视图的inputAccessoryView。这样,工具栏始终存在,当键盘出现时,它会随着键盘滑动。

在 iPad 上,他们似乎有一个UISplitViewController,工具栏是详细视图控制器的一部分。现在,当我进行相同的设置时,我的详细视图的输入辅助工具栏会延伸到整个宽度,所以就像键盘一样,它也与主视图控制器重叠。另一方面,Apple 设法将输入附件限制在详细视图的约束范围内。

我该怎么做?

【问题讨论】:

  • 我以不同的方式解决了这个问题,类似于 Apple 在他们自己的消息应用程序中实现它的方式。如果有人有兴趣,我可以发布我的解决方案。
  • @LeoNatan 我非常感兴趣。我很想知道苹果是如何实现它的。请务必发布您的解决方案!
  • 刚刚看到这条评论。明天上班,当我在我的代码附近时。

标签: ios objective-c uisplitviewcontroller inputaccessoryview


【解决方案1】:

inputAccessoryView 不可能只用于UISplitViewController 中的一个视图控制器。 我的做法是将inputAccessoryView 作为容器并在其中使用320px 偏移量在其中包含子视图。


 - (void)setFrame:(CGRect)frame
{
    if (RUNNING_ON_IPAD)
    {
        CGFloat superviewWidth = self.superview.bounds.size.width;

        CGFloat offset = 321.f;
        frame.origin.x = offset;
        frame.size.width = superviewWidth - offset;
    }

    [super setFrame:frame];

}

【讨论】:

  • 嘿,对不起,我没有看到你的邮件。请问你用的是哪个地址?
【解决方案2】:

不要使用 inputAccessoryView,只需将您的附件视图作为子视图添加到相应视图的底部即可。然后将移动与键盘同步,如下所述: Synchronizing Animations in keyboardWillShow keyboardWillHide -- Hardware Keyboard & Virtual Keyboard Simultaneously

【讨论】:

  • 这在 iPad 上移动未固定的键盘时不起作用,因为事件只会在键盘移动完成后触发。
  • 好点。也许最好的选择是创建 2 个相同的附件视图,一个作为子视图来激活键盘,另一个作为 inputAccessoryView 分配给键盘可见时。或者,也许,一个视图可以交替扮演这些角色,尽管我无法让它发挥作用。
猜你喜欢
  • 1970-01-01
  • 2012-06-15
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多