Có cách nào để đặt chuỗi giữ chỗ cho NSTextView
như thế trong NSTextField
không? Tôi đã kiểm tra tài sản nhưng không thể tìm thấy nó. Tôi đã tìm kiếm một số câu hỏi nhưng không có giải thích đúng.Đặt chuỗi giữ chỗ cho NSTextView
Trả lời
Tôi tìm thấy câu trả lời này trực tuyến. Philippe Mougin thực hiện việc này.
static NSAttributedString *placeHolderString;
@implementation TextViewWithPlaceHolder
+(void)initialize
{
static BOOL initialized = NO;
if (!initialized)
{
NSColor *txtColor = [NSColor grayColor];
NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:txtColor, NSForegroundColorAttributeName, nil];
placeHolderString = [[NSAttributedString alloc] initWithString:@"This is my placeholder text" attributes:txtDict];
}
}
- (BOOL)becomeFirstResponder
{
[self setNeedsDisplay:YES];
return [super becomeFirstResponder];
}
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
if ([[self string] isEqualToString:@""] && self != [[self window] firstResponder])
[placeHolderString drawAtPoint:NSMakePoint(0,0)];
}
- (BOOL)resignFirstResponder
{
[self setNeedsDisplay:YES];
return [super resignFirstResponder];
}
@end
Swift 2,0
var placeHolderTitleString: NSAttributedString = NSAttributedString(string: "Place Holder Value", attributes: [NSForegroundColorAttributeName : NSColor.grayColor()])
override func becomeFirstResponder() -> Bool {
self.needsDisplay = true
return super.becomeFirstResponder()
}
override func drawRect(rect: NSRect) {
super.drawRect(rect)
if (self.string! == "") {
placeHolderString.drawAtPoint(NSMakePoint(0, 0))
}
}
Swift 4
Khi nó quay ra, đã có vẻ là một tài sản placeholderAttributedString
trong NSTextView
mà không được tiếp xúc công khai. Vì vậy, bạn chỉ có thể thực hiện nó trong lớp con của riêng bạn và có được hành vi giữ chỗ mặc định (tương tự như NSTextField
).
class PlaceholderTextView: NSTextView {
@objc var placeholderAttributedString: NSAttributedString?
}
Và nếu thuộc tính này sẽ có sẵn trong tương lai, bạn chỉ cần sử dụng NSTextView thay vì lớp con này.
Tôi đã gửi một radar yêu cầu Apple tiết lộ tài sản này http://www.openradar.me/33583675 –
Điều này dường như không hoạt động. Tôi đã triển khai thuộc tính trong một phân lớp nhưng nó không được hiển thị. – Austin
@JanApotheker Có, nó không chắc chắn cho dù đó là trong swift4 hoặc trong 10.13. Điều đó không hoạt động –
- 1. pymssql và giữ chỗ
- 2. C# Chuỗi Format giữ chỗ trong Regular Expressions
- 3. cách thay thế trình giữ chỗ trong chuỗi?
- 4. Trình giữ chỗ cho văn bản? (ExtJS)
- 5. trình giữ chỗ cho thẻ chọn
- 6. Angular2 i18n cho văn bản giữ chỗ
- 7. Làm thế nào để cung cấp chuỗi giữ chỗ tùy chỉnh cho định dạng chuỗi
- 8. Trình giữ chỗ trong IE7
- 9. Làm cách nào để đặt trình giữ chỗ trong JavaFX?
- 10. Trình tạo biểu mẫu Symfony2 - Xóa nhãn, đặt giữ chỗ
- 11. "Không thể đặt thông báo trình giữ chỗ của plugin"?
- 12. Java: Định dạng chuỗi với trình giữ chỗ
- 13. Thay thế Chuỗi Gradle - không có phần giữ chỗ
- 14. Trình giữ chỗ nguồn cho hình ảnh tải chậm
- 15. Trình giữ chỗ và NSLocalizedString
- 16. Các ký tự hợp lệ PDO cho trình giữ chỗ
- 17. Trình giữ chỗ Hình ảnh
- 18. Trình giữ chỗ cho tiện ích con tùy chỉnh
- 19. HTML5 như trình giữ chỗ
- 20. Trình giữ chỗ HTML không hoạt động cho Android
- 21. Kích thước trình giữ chỗ cho Android Glide
- 22. Nhiều phong cách cho văn bản giữ chỗ đầu vào
- 23. Trình giữ chỗ không hiển thị trong IE8 cho Bootstrap
- 24. người dùng fontawesome trong trình giữ chỗ
- 25. sqlquery một tên giữ chỗ nhiều lần
- 26. Đặt phông chữ mặc định trong NSTextView
- 27. HTML - Giữ giữ chỗ khi người dùng nhập
- 28. Tăng giữ chỗ MPL và Lambda
- 29. GWT SuggestBox có thuộc tính giữ chỗ
- 30. Python Gtk.Entry văn bản giữ chỗ
Điều này cực kỳ hữu ích, nhưng bất kỳ ý tưởng nào về cách làm cho văn bản trình giữ chỗ bị bao bọc trên nhiều dòng? –