我创建了一个用于检查UITextView scrollEnabled
的演示。
它只包含1 UITextView
和2按钮启用和禁用滚动
我在模拟器和设备iOS 8上测试,如果单击禁用滚动按钮,UITextView
将正确禁用滚动,但之后我
点击启用滚动,UITextView
赢了启用滚动
但是,我在设备iOS9上测试,启用和禁用滚动效果很好。
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *myTextView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)enableScrollButtonPressed:(id)sender{
self.myTextView.scrollEnabled = YES;
}
- (IBAction)disableScrollButtonPressed:(id)sender{
self.myTextView.scrollEnabled = NO;
}
@end
有什么想法解决这个问题吗?如果有人不理解我的解释,请检查
my demo project
任何帮助或建议将非常感谢
答案 0 :(得分:17)
问题是在iOS 8中,更改scrollEnabled时未正确调整contentSize。对enableScrollButtonPressed方法进行小幅调整将成功解决问题。
-H 'Content-Type:application/json'
答案 1 :(得分:6)
是的,你是正确的禁用和启用textview的滚动在iOS8中不起作用它可能是一个错误或其他任何东西,让它成为。 我们可以通过更改textview的ContentSize 来停用或启用文本视图滚动。
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *myTextView;
@end
@implementation ViewController
-(IBAction)enableScrollButtonPressed:(id)sender{
CGSize scrollableSize = CGSizeMake(self.myTextView.bounds.size.width+20, self.myTextView.bounds.size.height+20);
[self.myTextView setContentSize:scrollableSize];
}
-(IBAction)disableScrollButtonPressed:(id)sender{
[self.myTextView setContentOffset:CGPointMake(0, 0)];
[self performSelector:@selector(StopScroll) withObject:nil afterDelay:0.1];
}
-(void)StopScroll{
CGSize scrollableSize = CGSizeMake(self.myTextView.bounds.size.width, self.myTextView.bounds.size.height/2);
[self.myTextView setContentSize:scrollableSize];
}
@end
我测试过上面的代码它对我来说很好用我正在使用 xcode 7.2.1 和 iOS 8.3 。试一试,让我知道结果
答案 2 :(得分:5)
-(IBAction)enableScrollButtonPressed:(id)sender{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.myTextView.scrollEnabled = YES;
[self.myTextView setText:self.myTextView.text];
self.myTextView.layoutManager.allowsNonContiguousLayout = false;
});
}
-(IBAction)disableScrollButtonPressed:(id)sender{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.myTextView.scrollEnabled = NO;
});
}
条件是你需要首先滚动然后它才能完美地运作
表示在点击禁用滚动按钮时,应在某个位置滚动textview 不得在默认位置
答案 3 :(得分:4)
Please follow below steps simply
self.myTextView.scrollEnabled = NO;
self.myTextView.userInteractionEnabled = YES;
self.myTextView.scrollEnabled = YES;
答案 4 :(得分:3)
您需要在视图中启用或禁用滚动视图后布局视图。
使用viewWillLayoutSubviews / layoutIfNeeded方法。
答案 5 :(得分:3)
我尝试了我的代码,但它运行正常
IBOutlet UITextView *tv;
//---------Enable button action.
-(IBAction)enable:(id)sender
{
tv.scrollEnabled=YES;
}
//---------Disable button action.
-(IBAction)disable:(id)sender
{
tv.scrollEnabled=NO;
}
在设备中再次尝试使用您的代码。
答案 6 :(得分:3)
按如下方式更改您的财产。
你的代码中的..
@property (weak, nonatomic) IBOutlet UITextView *myTextView;
更改属性属性如下:
@property (strong, nonatomic) IBOutlet UITextView *myTextView;
然后它会正常工作。我查了一下。
答案 7 :(得分:0)
试试这个
func scrollViewDidScroll(_ scrollView: UIScrollView) {
tableView.setContentOffset(CGPoint.zero, animated: false)
}