Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建免责声明屏幕,用户必须在其中向下滚动_Ios_Uiviewcontroller - Fatal编程技术网

Ios 创建免责声明屏幕,用户必须在其中向下滚动

Ios 创建免责声明屏幕,用户必须在其中向下滚动,ios,uiviewcontroller,Ios,Uiviewcontroller,我需要创建一个长文本的discaimer屏幕(它被本地化为不同的语言) 用户应向下滚动至文本按钮,然后查看“同意”按钮 由于警报相当有限,我创建了一个UIViewController,并在其中添加了一个ScrollView 现在我在这个Scrollview中添加了一个TextView,但问题是这个TextView本身不应该是可滚动的,而应该具有它所保存的完整文本所需的确切大小(当然,每个语言的大小都不同,并且总是超过不滚动的屏幕高度)然后在长文本视图下,我需要定位UIButton 文本视图+按钮

我需要创建一个长文本的discaimer屏幕(它被本地化为不同的语言)

用户应向下滚动至文本按钮,然后查看“同意”按钮

由于警报相当有限,我创建了一个UIViewController,并在其中添加了一个ScrollView

现在我在这个Scrollview中添加了一个TextView,但问题是这个TextView本身不应该是可滚动的,而应该具有它所保存的完整文本所需的确切大小(当然,每个语言的大小都不同,并且总是超过不滚动的屏幕高度)然后在长文本视图下,我需要定位UIButton

文本视图+按钮都在滚动视图中

由于UITextView根据当前语言具有不同的高度-我如何正确设置此完整屏幕-理想情况下使用IB。或者如果无法通过编程实现


或者有一种完全不同的更简单的方法吗?

您不应该需要一个专用于它的整个视图控制器。UIAlertView应自动创建带有适当按钮的可滚动文本框

下面是几行简单的文字。不要忘记在头文件中设置UIAlertViewDelegate:

NSString *message = @"This is a test message.\n\nYou should avoid this and that\n\nThis goes to the next line.";
NSString *title = @"Disclaimer";

[[[UIAlertView alloc] initWithTitle:title message:message delegate:self    cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil] show];

您不需要整个视图控制器专用于它。UIAlertView应自动创建带有适当按钮的可滚动文本框

下面是几行简单的文字。不要忘记在头文件中设置UIAlertViewDelegate:

NSString *message = @"This is a test message.\n\nYou should avoid this and that\n\nThis goes to the next line.";
NSString *title = @"Disclaimer";

[[[UIAlertView alloc] initWithTitle:title message:message delegate:self    cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil] show];
使用下面的按钮将UILabel(行数设置为0)添加到滚动视图中。设置约束,使按钮对标签底部具有垂直间距约束。为标签指定固定宽度约束和高度约束。为高度约束创建一个IBOutlet,并使用从sizeWithFont:constrainedToSize:lineBreakMode:获得的值在代码中调整该约束的常量参数。您还需要使用相同的值加上适合按钮所需的大小来调整滚动视图的contentSize。这将使标签根据其包含的文本具有正确的高度,并且您的按钮将始终位于该标签下方的设定距离

- (void)viewDidLoad {
    [super viewDidLoad];
    self.label.text = @"dfkl;jfjdfkjf sdfl klf;jskdl;fja skfjdklfj skdlfjs dklfjsklfj sklfjskl;f jks;alfjsk;lfjs;klfj;kfjs;kljk;lfjskdfj;klf j;klf jkl;fj;klfj;klfj k;fs;klfjsk;lfj ;klfjk;alfjk;alfjk;lfjk;lfjlkf kl;ajf akl;sfj sk;fk;lfjsk;ldfjsk;lfjsk;lfjsklfjkl;s fjklsafj kslfjkl fjklasfjklajfklafjaksdlfj lsdkf jsklfskl;f skld fjlk;sfklsfj ksff;kjdsfj sfkl;fkl;fklklfjlk;";
    CGSize labelSize = [self.label.text sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(280, CGFLOAT_MAX)]; // 280 is the width of the label set in IB
    self.heightCon.constant = labelSize.height;
    self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, labelSize.height +120);

}
在本例中,heightCon是IB中标签高度约束的IBOutlet。我在ViewDiLoad中这样做了,但无论在哪里用文本填充标签,您都需要这样做。

将UILabel(行数设置为0)及其下方的按钮添加到滚动视图中。设置约束,使按钮对标签底部具有垂直间距约束。为标签指定固定宽度约束和高度约束。为高度约束创建一个IBOutlet,并使用从sizeWithFont:constrainedToSize:lineBreakMode:获得的值在代码中调整该约束的常量参数。您还需要使用相同的值加上适合按钮所需的大小来调整滚动视图的contentSize。这将使标签根据其包含的文本具有正确的高度,并且您的按钮将始终位于该标签下方的设定距离

- (void)viewDidLoad {
    [super viewDidLoad];
    self.label.text = @"dfkl;jfjdfkjf sdfl klf;jskdl;fja skfjdklfj skdlfjs dklfjsklfj sklfjskl;f jks;alfjsk;lfjs;klfj;kfjs;kljk;lfjskdfj;klf j;klf jkl;fj;klfj;klfj k;fs;klfjsk;lfj ;klfjk;alfjk;alfjk;lfjk;lfjlkf kl;ajf akl;sfj sk;fk;lfjsk;ldfjsk;lfjsk;lfjsklfjkl;s fjklsafj kslfjkl fjklasfjklajfklafjaksdlfj lsdkf jsklfskl;f skld fjlk;sfklsfj ksff;kjdsfj sfkl;fkl;fklklfjlk;";
    CGSize labelSize = [self.label.text sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(280, CGFLOAT_MAX)]; // 280 is the width of the label set in IB
    self.heightCon.constant = labelSize.height;
    self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, labelSize.height +120);

}

在本例中,heightCon是IB中标签的高度约束的IBOutlet。我在viewDidLoad中这样做了,但无论您在哪里用文本填充标签,都需要这样做。

我是如何通过创建UITableViewController(称之为DisclairServiceWController)来解决这个问题的。第一行显示文本。第二行是接受单元格,第三行是拒绝单元格

在新的UITableViewController中创建协议和委托。协议应具有用于接受和拒绝的选择器。委托应该允许任何符合新协议的对象

从演示的ViewController中,显示新的免责声明EWController模式。确保将委托设置为self并实现协议。由于accept和deny单元格位于UITableView的底部,因此您知道用户已滚动到底部。没有其他方法可以到达接受和拒绝单元格供它们点击


这似乎是一个很大的工作,它是。但是现在,如果还有其他地方需要免责声明文本,我可以在不更改代码的情况下重用此代码。

我是如何通过创建UITableViewController(称之为免责声明控制器)来解决此问题的。第一行显示文本。第二行是接受单元格,第三行是拒绝单元格

在新的UITableViewController中创建协议和委托。协议应具有用于接受和拒绝的选择器。委托应该允许任何符合新协议的对象

从演示的ViewController中,显示新的免责声明EWController模式。确保将委托设置为self并实现协议。由于accept和deny单元格位于UITableView的底部,因此您知道用户已滚动到底部。没有其他方法可以到达接受和拒绝单元格供它们点击


这似乎是一个很大的工作,它是。但是现在,如果还有其他地方需要免责声明文本,我可以在不更改代码的情况下重新使用此代码。

您不应该需要专用于它的整个视图控制器。UIAlertView应自动创建带有适当按钮的可滚动文本框!但是按钮是可见的,即使文本没有向下滚动到按钮-我需要确保用户向下滚动完整的文本!哦,那样的话,可能会有点棘手。您可以在几个不同的弹出窗口中输入免责声明,并让他们在多个上下文中驳回或同意。您到底在谈论多少文本?@user387184不要使用
UITextView
。使用
ui标签
。将标签和按钮添加到滚动视图中。诀窍是确保标签的大小完全适合文本,而不考虑语言,并且按钮需要放置在l的下方