如何在 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