2012-12-22 34 views
8

Tôi cố gắng để đặt một chuỗi Được phân phối bên trong một NSTextField, mà chính nó là bên trong một NSAlert Đây là mã của tôi:[__NSCFConstantString pointSize]: chọn không được công nhận gửi đến instanc

NSTextField *label1 = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 23, 50, 20)]; 
[label1 setEditable:FALSE]; 
[label1 setAllowsEditingTextAttributes:TRUE]; 
[label1 setBezeled:FALSE]; 
label1.backgroundColor = [NSColor clearColor]; 
NSString *login = @"Username"; 
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:login]; 
NSString *boldFontName = [[NSFont boldSystemFontOfSize:12] fontName]; 
[attrString beginEditing]; 
NSRange ran = NSMakeRange(0, 8); 
[attrString addAttribute:NSFontAttributeName 
        value:boldFontName 
        range:ran]; 

[attrString endEditing]; 
NSLog(@"%@",attrString); 
[label1 setAttributedStringValue:attrString]; 
[alert setAccessoryView:label1]; 
[alert runModal]; 

Tuy nhiên, ngay sau khi [ cảnh báo runModal] được gọi, ứng dụng của tôi gặp sự cố

"[__NSCFConstantString pointSize]: unrecognized selector sent to instance 0x7fff74035bb0" 

Tôi không chắc chắn tại sao điều này xảy ra. Nó xuất hiện rằng nó có liên quan đến chuỗi, bởi vì ngay sau khi tôi loại bỏ [alert setAccessoryView: label1] hoặc cung cấp cho label1 một nsstring tiêu chuẩn nó hoạt động tốt. Hãy giúp tôi!

Trả lời

37

Bạn đã làm đúng. Nhưng bạn đã làm một sai lầm nhỏ. Bạn đã vượt qua NSString làm thuộc tính cho NSFontAttributeName nhưng thuộc tính NSFont.

Hãy thử điều này.

NSFont *boldFontName = [NSFont boldSystemFontOfSize:12]; 
[attrString beginEditing]; 
NSRange ran = NSMakeRange(0, 8); 
[attrString addAttribute:NSFontAttributeName 
        value:boldFontName 
        range:ran]; 
+0

Hi xuống cử tri! tại sao bạn làm điều đó? –

1

Câu trả lời ở trên hoàn toàn chính xác. Tôi đã gặp phải sự cố tương tự khi chỉ gặp sự cố trong iOS 7.0.3 & 7.0.4 và hoạt động hoàn hảo ở tất cả các phiên bản khác. Sau khi điều tra quá nhiều, tôi đã biết rằng @ "HelveticaNeue-Italic" không khả dụng trong phiên bản 7.0.3 & 7.0.4 của iOS, do đó tôi đã sử dụng để vượt qua sự cố trong các phiên bản đó.

Tôi đã cố định vấn đề với mã bên dưới:

self.headerFont = [UIFont fontWithName:@"HelveticaNeue-Italic" size:16.0f]; 
if (self.headerFont == nil) { 
    self.headerFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0f]; 
} 
Các vấn đề liên quan