如何在 inputAccessoryView 内的 UILabel 中使用 AutoScrollLabel?

Posted

技术标签:

【中文标题】如何在 inputAccessoryView 内的 UILabel 中使用 AutoScrollLabel?【英文标题】:How to use AutoScrollLabel in UILabel inside inputAccessoryView? 【发布时间】:2013-12-27 05:17:34 【问题描述】:

当键盘出现时如何在inputAccessoryView里面的UILabel中使用AutoScrollLabel。我似乎很难使用它,因为我没有使用 IB 方法将它连接到代码。我以编程方式执行此操作。我已经导入了 AutoScrollView 的 .h 文件,它给了我错误。 Find the AutoScrollLabel here

这是我的 inputAccessoryView 代码。

- (void)viewDidLoad

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake
(0, 0, 320, 23)];
label.backgroundColor = [UIColor clearColor];
label.shadowOffset = CGSizeMake(0, 1);
label.text = @"24 Hour time format only!";
label.font = [UIFont systemFontOfSize:17.0];
[label setTextColor:[UIColor whiteColor]];

UIBarButtonItem *text2 = [[UIBarButtonItem alloc] initWithCustomView:label];

UIToolbar* numberToolbar = [[UIToolbar alloc]init];
numberToolbar.barStyle = UIBarStyleBlackOpaque;
numberToolbar.items = [NSArray arrayWithObjects:text2, nil];
[numberToolbar sizeToFit];

【问题讨论】:

你能显示你的错误日志吗? 如果您访问上面的 GitHub 链接,您将看到使用部分。我尝试使用它并用 autoscrolllabel.whatever 替换它,但我无法运行模拟器,因为它说它无法识别 autoscrolllabel.whatever。这很奇怪,因为我在我的 .m 中导入了 autoscrolllabel.h。我已将两个自动滚动标签文件复制到我的项目中。 我已经尝试使用AutoScrollLabelDemo,向其添加文本字段。这对我来说可以?我在textFieldDidBeginEditing: 中添加了inputAccessoryView,并在textFieldDidEndEditing: 中设置为nil。再试一次。如果你想要那个代码,我会发布它。 @Mani 如果可以,请给我看看您的代码。对不起,我是初学者。所有这些都是以编程方式完成的。 AutoscrollLabel 没有 IB。 【参考方案1】:

在我的示例中,我使用 xib 创建了标签,然后在它出现时将其添加到键盘 acc 中。

像这样声明标签

@property (strong, nonatomic) IBOutlet CBAutoScrollLabel *autoScrollLabel;

viewDidLoad

self.autoScrollLabel.text = @"This text may be clipped, but now it will be scrolled. This text will be scrolled even after device rotation.";
    self.autoScrollLabel.textColor = [UIColor blueColor];
    self.autoScrollLabel.labelSpacing = 35; // distance between start and end labels
    self.autoScrollLabel.pauseInterval = 1.7; // seconds of pause before scrolling starts again
    self.autoScrollLabel.scrollSpeed = 30; // pixels per second
    self.autoScrollLabel.textAlignment = NSTextAlignmentCenter; // centers text when no auto-scrolling is applied
    self.autoScrollLabel.fadeLength = 12.f;
    self.autoScrollLabel.scrollDirection = CBAutoScrollDirectionLeft;
    [self.autoScrollLabel observeApplicationNotifications];

然后,将代码添加到文本字段委托方法textFieldDidBeginEditing:,如下所示

-(void)textFieldDidBeginEditing:(UITextField *)textField

    textField.inputAccessoryView = self.autoScrollLabel;

最后,将代码添加到textFieldDidBeginEditing:,如下所示

- (void)textFieldDidEndEditing:(UITextField *)textField

    textField.inputAccessoryView = nil;

【讨论】:

我不断收到“成员引用基类型 'int *' 不是结构或联合”。这是什么。 你在哪一行得到了这个?我想,你在其他地方做错了吗?发布导致此错误的代码..放置断点并跟踪您的错误代码.. 视图中加载的所有内容都给了我这个错误。 “self.autoScrollLabel”。所有这些都带有下划线。 我也没有使用 XIB。只是一个故事板。 有什么可以连接的?【参考方案2】:

当我认为它应该滚动时,我让文本不滚动。我发现,如果显示文本的标签宽度大于要显示的文本,它将不会滚动。这带来了显示的文本现在被“...”截断的问题它滚动,但它只显示文本直到并包括“...”正如预期的那样,这是设计使然,我不知道。除了这两个问题,这是一个非常好的功能。

【讨论】:

以上是关于如何在 inputAccessoryView 内的 UILabel 中使用 AutoScrollLabel?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UILabel 放在键盘的“inputAccessoryView”中?

如何在 inputAccessoryView [Swift] 中实现滚动视图

iOS7中如何去掉UIWebView的inputAccessoryView?

如何在此视图控制器中显示 inputAccessoryView

如何将 UICollectionView 添加到 inputAccessoryView

inputAccessoryView 如何调整大小?