如何解决如何停止UITextView的底部边缘插图从重置为32?
| 我有一个全屏UITextView,每当出现键盘时它都会变小,以使键盘不会覆盖任何文本。作为此过程的一部分,我还更改了textView的底部contentInset,因此,当存在键盘时,文本下方的空间较小,而当没有键盘时,文本下方的空间较大。 问题是,每当用户点击底部附近的textView开始编辑时,底部contentInset都会自发地将其自身重置为32。我从此答案中知道,可以继承UITextView并重写contentInset
方法,如下所示:
@interface BCZeroEdgeTextView : UITextView
@end
@implementation BCZeroEdgeTextView
- (UIEdgeInsets) contentInset
{
return UIEdgeInsetsZero;
}
@end
但这并不能阻止底部插图自身重新设置-只是更改了它自己重新设置的数字。如何使UITextView保持设置的contentInset值?
解决方法
为了使其保持设置的值,您可以使用子类路线,但返回自己的属性的值而不是常量,如下所示:
@interface BCCustomEdgeTextView : UITextView
@property (nonatomic,assign) UIEdgeInsets myContentInset;
@end
@implementation BCCustomEdgeTextView
@synthesize myContentInset;
- (UIEdgeInsets) contentInset {
return self.myContentInset;
}
@end
但请注意,UITextView将其底部的contentInset重置为32的原因是,更标准的插入将切断自动补全弹出窗口等。
,这是我的解决方案,但要长一些:
- (void)setCustomInsets:(UIEdgeInsets)theInset
{
customInsets = theInset;
self.contentInset = [super contentInset];
self.scrollIndicatorInsets = [super scrollIndicatorInsets];
}
- (void)setContentInset:(UIEdgeInsets)theInset
{
[super setContentInset:UIEdgeInsetsMake(
theInset.top + self.customInsets.top,theInset.left + self.customInsets.left,theInset.bottom + self.customInsets.bottom,theInset.right + self.customInsets.right)];
}
- (void)setScrollIndicatorInsets:(UIEdgeInsets)theInset
{
[super setScrollIndicatorInsets:UIEdgeInsetsMake(
theInset.top + self.customInsets.top,theInset.right + self.customInsets.right)];
}
子类UITextView
并添加属性customInsets
,每当需要设置contentInset
和scrollIndicatorInsets
时,都应设置customInsets
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。