标签: inputaccessoryview

在iOS 8中更改inputAccessoryView的框架

很长一段时间潜伏 - 第一次海报!

我在重建UITextView像WhatsApp这样的酒吧时遇到了问题.

我正在使用自定义UIView子类,并懒惰地实例化它:

- (UIView *)inputAccessoryView

并返回YES:

- (BOOL)canBecomeFirstResponder

现在,我想改变的大小inputAccessoryView时,UITextView在规模的增长.在iOS 7上,我只是改变所述视图框架的大小 - 而不是它的原点 - 然后调用reloadInputViews它会起作用:视图将向上移动,使其在键盘上方完全可见.

但是,在iOS 8上,这不起作用.使其工作的唯一方法是还将帧的原点更改为负值.这样会很好,除了它会产生一些奇怪的错误:例如,UIView在输入任何文本时返回到"原始"框架.

有什么我想念的吗?我非常肯定WhatsApp使用它inputAccessoryView是因为它们在拖动时解除键盘的方式 - 仅在最新版本的应用程序中.

如果你能帮助我,请告诉我!或者,如果有任何测试,您希望我运行!

谢谢!:)

顺便说一下,这是我用来更新自定义UIView高度的代码composeBar:

// ComposeBar frame size
CGRect frame = self.composeBar.frame;
frame.size.height += heightDifference;
frame.origin.y -= heightDifference;
self.composeBar.frame = frame;
[self.composeBar.textView reloadInputViews]; // Tried with this
[self reloadInputViews];                     // and this
Run Code Online (Sandbox Code Playgroud)

编辑:完整源代码可在@ https://github.com/manuelmenzella/SocketChat-iOS获得

objective-c ios inputaccessoryview ios8

27
推荐指数
4
解决办法
1万
查看次数

iPhone X如何处理View Controller inputAccessoryView?

我有一个消息传递应用程序,它具有全屏表格视图底部的文本字段的典型UI设计.我将该文本字段设置为视图控制器inputAccessoryView并调用ViewController.becomeFirstResponder()以使字段显示在屏幕底部.

我知道这是Apple推荐的实现这种UI结构的方法,它在"经典"设备上运行得很好但是当我在iPhone X模拟器上测试时,我注意到使用这种方法,文本字段不尊重新的"安全区域" .文本字段显示在主屏幕指示器下方屏幕的最底部.

我查看了HIG文档,但没有找到任何关于inputAccessoryView视图控制器的有用信息.

这很难,因为使用这种方法我实际上并没有直接控制任何约束,我只是设置inputAccessoryView并让视图控制器从那里处理UI.所以我不能仅仅把这个领域限制在新的安全区域.

有没有人在这方面找到了很好的文档,或者知道在iPhone X上运行良好的替代方法?

在此输入图像描述

iphone ios inputaccessoryview iphone-x

20
推荐指数
3
解决办法
1万
查看次数

更改inputAccessoryView问题的高度

当我更改inputAccessoryViewiOS 8中的高度时,inputAccessoryView不会转到右侧原点,而是覆盖键盘.

在此输入图像描述

以下是一些代码段:

在表视图控制器中

- (UIView *)inputAccessoryView {
    if (!_commentInputView) {
        _commentInputView = [[CommentInputView alloc] initWithFrame:CGRectMake(0, 0, [self width], 41)];
        [_commentInputView setPlaceholder:NSLocalizedString(@"Comment", nil) andButtonTitle:NSLocalizedString(@"Send", nil)];
        [_commentInputView setBackgroundColor:[UIColor whiteColor]];
        _commentInputView.hidden = YES;
        _commentInputView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;
    }

    return _commentInputView;
}
Run Code Online (Sandbox Code Playgroud)

在CommentInputView中

#when the textview change height
- (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height {
    if (height > _textView_height) {
        [self setHeight:(CGRectGetHeight(self.frame) + height - _textView_height)];
        [self reloadInputViews];
    }
}
Run Code Online (Sandbox Code Playgroud)

来自ios-helpers的 UIView类别

- (void)setHeight: (CGFloat)heigth {
    CGRect frame = self.frame;
    frame.size.height …
Run Code Online (Sandbox Code Playgroud)

ios inputaccessoryview ios8

17
推荐指数
2
解决办法
9198
查看次数

自定义键盘InputAccessoryView在iOS 11中不可见

我已经实现了自定义输入附件视图,它工作正常,直到iOS 10.3.1.但它在iOS 11测试版中不可见.

有没有人遇到过这个问题?

keyboard ios inputaccessoryview

17
推荐指数
3
解决办法
8198
查看次数

由于未捕获的异常'UIViewControllerHierarchyInconsistency'而终止应用,

当我在ios8崩溃中运行时,我在选择器上方创建了一个带有两个按钮的工具栏并在ios7上工作:

终止应用程序2到未捕获的异常'UIViewControllerHierarchyInconsistency',原因:'子视图控制器:应该有父视图控制器:但是请求的父级是:'

这是在ios7中安静工作的代码段:

 expiredPromoTextField.inputView = DatePicker;
 expiredPromoTextField.delegate = self;
 quantityPromoTextField.inputView = quantityPicker;
 quantityPromoTextField.delegate = self;


 // Create button to close the UIPickerView
 UIToolbar * mypickerToolbar = [[UIToolbar alloc] initWithFrame: CGRectMake (0, 0, 320, 56)];
 mypickerToolbar.barStyle = UIBarStyleBlackTranslucent;
 [mypickerToolbar sizeToFit];
 NSMutableArray * barItems = [[NSMutableArray alloc] init];
 UIBarButtonItem * CancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCancel target: self action:selector (cancelDoneClicked)];
 [barItems addObject: CancelBtn];
 UIBarButtonItem * FLEXspace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target: self action: nil];
 [barItems addObject: FLEXspace];
 UIBarButtonItem * doneBtn = …
Run Code Online (Sandbox Code Playgroud)

uipickerview ios inputaccessoryview

13
推荐指数
2
解决办法
1万
查看次数

如何增加inputAccessoryView的高度

我已经花了好几天没有解决方案了.

我有inputAccessoryView一个UIView包含一个textView和两个按钮.该行为符合inputAccessoryView预期,除了一个以外在所有情况下都能正常工作.

当textView的高度增加时,我试图增加inputAccessoryView相同数量的高度.当我重新定义的高度inputAccessoryViewtextViewDidChange,该inputAccessoryView增加的高度向下在键盘上,而不是向上.

我从SO那里尝试了许多不同的建议,但没有任何效果.我想这是自动添加NSLayoutConstraint的,inputAccessoryView但我不知道如何在swift和iOS 8.3中更改该值.

func textViewDidChange(textView: UITextView) {

    var contentSize = messageTextView.sizeThatFits(CGSizeMake(messageTextView.frame.size.width, CGFloat.max))

    inputAccessoryView.frame.size.height = contentSize.height + 16

}
Run Code Online (Sandbox Code Playgroud)

加入

inputAccessoryView.setTranslatesAutoresizingMaskIntoConstraints(true)
Run Code Online (Sandbox Code Playgroud)

到上面的代码帮助和inputAccessoryView高度正确向上增加但是我得到无法同时满足几个约束的约束,并且很难识别违规者.另外,我得到了textView在新行的每个第二个实例上创建额外空间的奇怪效果.

谢谢.

ios autoresizingmask nslayoutconstraint inputaccessoryview swift

13
推荐指数
1
解决办法
5981
查看次数

在iOS 8中动态调整inputAccessoryView的大小

基本上我试图在inputAccessoryView属性中创建一个调整大小的UITextView.

我有一个viewController,方法canBecomeFirstResponder返回true,一个视图我通过自定义类(从XIB获取)实例化.在这个视图中是一个UITextView.

我尝试从该类的内部调整完整的inputAccessoryView.我尝试了几个方面:直接设置框架,尝试使用高度约束.它似乎只调整了一半:

这基本上就是我想要的(有或没有自动布局,但在iOS 7/8 +中工作):

class MessageInputAccessory: UIView, UITextViewDelegate
{
    @IBOutlet weak var textView: UITextView!

    func textViewDidChange(textView: UITextView)
    {
        var contentSize = textView.sizeThatFits(CGSizeMake(textView.frame.size.width, CGFloat.max))

        self.frame.size.height = contentSize.height + 20

        self.textView.reloadInputViews()
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章:在iOS 8中更改inputAccessoryView的框架.声明正在创建自动创建的约束.问题是,它不会为我创造约束.禁止或启用autolayout(也通过setTranslatesAutoresizingMaskIntoConstraints()).

objective-c ios inputaccessoryview swift

11
推荐指数
1
解决办法
4795
查看次数

使用简单的 UIToolar 进行键盘 inputAccessoryView 布局约束错误

我遇到了很多布局约束错误,所以我创建了一个新项目,并且只有一个 UIToolbar 和一个 UITextField 来尝试解决问题。即使有一个干净的项目,即使我没有覆盖.inputAccessoryView.

代码如下(无storyboard内容):

import UIKit

class ViewController: UIViewController {

    var aTextField = UITextField()

    override func viewDidLoad() {
        super.viewDidLoad()

        let aKeyboardToolBar = UIToolbar()

        // add buttons to the toolbar
        let prevButton = UIBarButtonItem(title: "PREV", style: .done, target: self, action: #selector(prevButtonTapped))
        let nextButton = UIBarButtonItem(title: "NEXT", style: .done, target: self, action: #selector(nextButtonTapped))
        let doneButton = UIBarButtonItem(title: "DONE", style: .done, target: self, action: #selector(doneButtonTapped))
        let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)

        aKeyboardToolBar.setItems([prevButton, nextButton, flexibleSpace, doneButton], animated: …
Run Code Online (Sandbox Code Playgroud)

uitextfield uitoolbar autolayout inputaccessoryview swift

10
推荐指数
1
解决办法
2700
查看次数

如何让inputAccessoryView锚定在UITabBar之上?

我正在尝试找出在标签栏上放置自定义inputAccessoryView的最佳方法.目前,我有一个inputAccessoryView,它位于屏幕的最底部,但它覆盖了标签栏.任何人都知道将inputAccessoryView移位的最佳做法?

目前,我在带有标签栏的故事板中定义了一个视图.其对应的视图控制器获取视图并调用becomeFirstResponder.我已经覆盖了两个: - (UIView*)inputAccessoryView和 - (BOOL)canBecomeFirstResponder在视图的.m中

objective-c uitabbar inputaccessoryview

9
推荐指数
1
解决办法
697
查看次数

显示警报时隐藏输入附件视图

我用input accessory view我的viewController在屏幕的底部停靠视图,并在键盘坚持.

一切正常,除了显示一个alert,input accessory view隐藏.它再次被揭露解雇了alert.这导致不期望的故障.

我尝试使用[alertView show]API和新alertControllerAPI.两种情况都存在问题.我需要得到支持iOS7.0.

请提供您宝贵的意见或解决此问题的方法.

uialertview ios inputaccessoryview uialertcontroller

9
推荐指数
0
解决办法
453
查看次数