Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Символы выводятся подчеркнутыми на 5s (американец)

Всем привет! Неожиданно столкнулся с такой проблемой: любые текстовые символы на кнопках при запуске приложения отображаются с подчеркиванием  на iPhone 5s (пробовал создавать приложение как в objC так и в swift, но все-равно кнопки-то я рисую в interface builder, а он один и тот же используется, запускаю приложение из xcode 6.2, на самом телефоне стоит версия OS 8.2, аппарат привезен из США). На аппарате 5s ростест такого не происходит, на ipad (тайланд) тоже все нормально, в эмуляторах iPhone также все отображается корректно. Перепробовал многое, ничего не помогает. ГОСПОДА ПРОГРАММИСТЫ если кто-то сталкивался с таким БАГОМ, пожалуйста отпишитесь. Заранее СПАСИБО!


Это сообщение отредактировал(а) Kusheleff - 16.3.2015, 13:10
Ответ:
С этого я и начал, простая кнопка посреди экрана с надписью "Button" и та - подчеркнута...
Хоть ты тресни, не могу въехать что не так ... Хотя у меня есть одна догадка, iOS 8.2 установлена только на нем, на iPad - iOS 8.1, а на ростестовском iPhone iOS 7.1 - думаю а не в этом ли дело... Если так, то видимо 8.2 кривая версия, но чтобы в этом убедиться надо обдейтнут iPhone с ростестом, а это аппарат моей жены - если что - оторвет голову... А iPad - мне кажется не показатель.
Вопрос: Собеседование в Малайзии

Всем привет!

Хотел поделиться моим первым опытом прохождения заграничного собеседования.
Решил для практики английского и возможного "опрометчивого" шага переезда послать резюме в эту чудесную страну))
В Европу с моими 1,5 годами опыта я решил пока не лезть, а, вот, Малайзия показалась интересной.
Разослал 20 резюме, получил два ответа, сегодня было первое собеседование.

Мой опыт общения с англоязычным миром ограничивался индусами и нативными американцами, но очень ограничено.
Когда говорят американцы - в основном понятно, но когда за дело берутся индусы - у меня наступает коллапс. Понимание их английского идет со страшным скрежетом.
Думал, с малазийцами будет также.

Но нет - по неведомой причине малазийский английский был вполне понятен, раза два всего переспросил.
Интервью длилось около часа, большую часть это были разговоры за жизнь и за опыт - расскажите о том проекте, а теперь о том, а как вы начали заниматься iOS разработкой, а как вы решаете проблемы, если с чем-то не можете справится, и т.д.
Потом было три задачки из серии "почему люки круглые".

Технических вопросов было всего пару - об инкапсуляции и как задеплоить приложение в Аппстор. Все))
После чего интервьюер сказал, что, мол все excellent, спасибо за собеседование, ну и поинтересовался касаемо финансовых-организационных вопросов.
Не знаю, что он смог понять об уровне моей квалификации из заданных вопросов, но тем не менее это было все.
Сказал, что будет еще интервью с менеджментом.

Короче, такие дела.
Как вы считаете, стоит втягиваться в такую авантюру? Сначала отправил резюме по весьма отстраненным причинам, а теперь и задумался - может и в самом деле поехать, тараканов поесть?
Как считаете?
Ответ: kievkao, езжайте. Новый опыт, новый рынок, новые ощущения. Тараканов поешьте...
Я делал ревью кода для местных разработчиков того рынка (Тайланд, Малайзия, Сингапур) - там такой ужас, так что приличным разработчикам там рады.
С другой стороны это не будет выгодно, ибо большинство их контор ориентировано на Европейский рынок. И ясное дело зарплатники будут с этого мало получать.
Вопрос: Чат с пользователями которые в радиусе 1 км от тебя

добрый день!

программа которую я хочу написать должна выполнять:

1) сканировать усеров вокруг меня и теx кто рядом отображать на экране в виде символов
2)при нажатии на символ можно послать сообщение соответствующему пользователю

не знаете ли вы какие нибудь программные шаблоны из которых можно было бы смастерить такую программку(желательно на swift)? и где их можно преобрести ?
Ответ: ios_user, нет, это так не работает. Я иногда просматриваю разные форумы и блоги, и попавшиеся описания тз заношу в список, а потом, когда на работе становится скучно, выбираю из списка тз, и пилю приложение. А когда именно выпадет проект с чатом сложно сказать, может пройти целый год.
Вопрос: Вызов метода из другого класса

Нужно вызвать метод myView.mOK из SOAPClient 

SOAPClient.h

Код

@interface SOAPClient : NSObject <NSXMLParserDelegate>
{
  SEL ok;
}

@property (nonatomic) SEL ok;
- (void) sendRequest;
@end


Код

@implementation INRSOAPClient
@synthesize ok;

-(void) sendRequest{
 [self performSelector:@selector(ok)]; // ошибок нет, но строка "selector exec" не выводится
}

@end



myView.m

Код

-(void) mOK
{
  NSLog(@"selector exec"); // 
}

-(IBAction)invokeService
{
    SOAPClient *soapClient = [[SOAPClient alloc] initWithMethod :@"dd" url:@"rr" text:@"8888"];
    
    soapClient.ok = @selector(mOK);
    [soapClient sendRequest];
}


Ответ:
Спасибо!
Вопрос: не работает delegate

Всем привет, у меня такая проблема, не получается написать делегат. По задумке есть 2 вью контроллера, в одном из них есть UItextBox, в который юзер вводит число с плавающей точкой, и кнопка. Число должно передаваться в другой вью контроллер по нажатию кнопки и выводиться там в UIabel. Но этого не происходит. Я тут выложил свой код, подскажите, что я неправильно делаю?
FirstViewController.h
Код

#import <UIKit/UIKit.h>
#import "DelegateProtocol.h"
@interface FirstViewController : UIViewController{
 IBOutlet UITextField *textfield1, *textfield2;
   __unsafe_unretained id <DelegateProtocol> _delegate;

}
@property (nonatomic, assign) id <DelegateProtocol> delegate;
- (IBAction) ButtonClick:(id) sender;
@end
;


FirstViewController.m
Код

#import "FirstViewController.h"

/*@interface FirstViewController ()

@end*/

@implementation FirstViewController
@synthesize delegate=_delegate;
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction) ButtonClick:(id) sender{
    float g = [textfield1.text floatValue];
    [self.delegate SendA:g];
    
}

@end



Код

#import <UIKit/UIKit.h>
#import "DelegateProtocol.h"
#import "FirstViewController.h"
@interface SecondViewController : UIViewController<DelegateProtocol> {
    float _a, _b;
    IBOutlet UILabel * Alabel, *Blabel;
}
@property float a, b;
@end


SecondViewController.m
Код

#import "SecondViewController.h"

/*@interface SecondViewController  ()

@end*/

@implementation SecondViewController
@synthesize a=_a;
- (void)viewDidLoad
{
    [super viewDidLoad];
    FirstViewController * testAppViewController = [[FirstViewController alloc] init];
    testAppViewController.delegate = self;
    // Do any additional setup after loading the view, typically from a nib.
}
-(void) SendA:(float) A{
    self.a = A ;
    NSString *str = [NSString stringWithFormat:@"%f", self.a];
    [Alabel  setText:str];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Ответ:
Всё, спасибо, всё получилось. Переопределил UITabBarController и использовал его в качестве буфера(сделал его делегатом).
Вопрос: не работает delegate

Всем привет, у меня такая проблема, не получается написать делегат. По задумке есть 2 вью контроллера, в одном из них есть UItextBox, в который юзер вводит число с плавающей точкой, и кнопка. Число должно передаваться в другой вью контроллер по нажатию кнопки и выводиться там в UIabel. Но этого не происходит. Я тут выложил свой код, подскажите, что я неправильно делаю?
FirstViewController.h
Код

#import <UIKit/UIKit.h>
#import "DelegateProtocol.h"
@interface FirstViewController : UIViewController{
 IBOutlet UITextField *textfield1, *textfield2;
   __unsafe_unretained id <DelegateProtocol> _delegate;

}
@property (nonatomic, assign) id <DelegateProtocol> delegate;
- (IBAction) ButtonClick:(id) sender;
@end
;


FirstViewController.m
Код

#import "FirstViewController.h"

/*@interface FirstViewController ()

@end*/

@implementation FirstViewController
@synthesize delegate=_delegate;
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction) ButtonClick:(id) sender{
    float g = [textfield1.text floatValue];
    [self.delegate SendA:g];
    
}

@end



Код

#import <UIKit/UIKit.h>
#import "DelegateProtocol.h"
#import "FirstViewController.h"
@interface SecondViewController : UIViewController<DelegateProtocol> {
    float _a, _b;
    IBOutlet UILabel * Alabel, *Blabel;
}
@property float a, b;
@end


SecondViewController.m
Код

#import "SecondViewController.h"

/*@interface SecondViewController  ()

@end*/

@implementation SecondViewController
@synthesize a=_a;
- (void)viewDidLoad
{
    [super viewDidLoad];
    FirstViewController * testAppViewController = [[FirstViewController alloc] init];
    testAppViewController.delegate = self;
    // Do any additional setup after loading the view, typically from a nib.
}
-(void) SendA:(float) A{
    self.a = A ;
    NSString *str = [NSString stringWithFormat:@"%f", self.a];
    [Alabel  setText:str];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Ответ:
Всё, спасибо, всё получилось. Переопределил UITabBarController и использовал его в качестве буфера(сделал его делегатом).
Вопрос: Вызов метода из другого класса

Нужно вызвать метод myView.mOK из SOAPClient 

SOAPClient.h

Код

@interface SOAPClient : NSObject <NSXMLParserDelegate>
{
  SEL ok;
}

@property (nonatomic) SEL ok;
- (void) sendRequest;
@end


Код

@implementation INRSOAPClient
@synthesize ok;

-(void) sendRequest{
 [self performSelector:@selector(ok)]; // ошибок нет, но строка "selector exec" не выводится
}

@end



myView.m

Код

-(void) mOK
{
  NSLog(@"selector exec"); // 
}

-(IBAction)invokeService
{
    SOAPClient *soapClient = [[SOAPClient alloc] initWithMethod :@"dd" url:@"rr" text:@"8888"];
    
    soapClient.ok = @selector(mOK);
    [soapClient sendRequest];
}


Ответ:
[self performSelector:@selector(ok)]

self performSelector: - означает что вы вызываете метод у self
@selector(ok) используется для метода, а не для SEL

Чтоб вызвать метод у вью надо писать
[myView performSelector:self.ok];

PS если вы используете property, то объявлять переменную с таким же именем не нужно. @synthesize можно тоже не использовать

Вопрос: Пляски вокруг UILabel (как нормально настроить перенос текста?)

Всем привет, существует задача - один вью контроллер с одной UILabel на нем. Текст этого лейбла динамически изменяется, должно быть всегда на весь экран девайса крупно его видно. Привязки UILabel стоят к центру по вертикали и горизонтали вьюхи, а также Equal Widths с вьюхой. Размер текста 250 для айпадов и 150 для айфонов, также стоит атрибут Autoshrink -> Maximum Font Scale (0.4) для сжатия размера текста в зависимости от количества символов.

Все проблемы начинаются с изменением количества Lines (строк) в UILabel. То есть, например, если поставить количество строк 3, то надпись "непереносимая невыносимость бытия" выглядит хорошо:
Кликните здесь для просмотра всего текста

Пляски вокруг UILabel (как нормально настроить перенос текста?)


А вот "ощущение безысходности" - уже не очень:
Кликните здесь для просмотра всего текста

Пляски вокруг UILabel (как нормально настроить перенос текста?)


Этой надписи гораздо комфортнее было бы со значением Lines - 2:

Кликните здесь для просмотра всего текста

Пляски вокруг UILabel (как нормально настроить перенос текста?)


То есть, при фиксированном количестве строк в зависимости от длины текста возникают уродливые переносы слов (ладно бы по правилам) и это очень печалит.
Как бы сделать так, чтобы, например, количество строк выставлялось в зависимости от количества слов, или просто отменить эти уродские переносы принудительно заставляя вывести минимум одно слово в строку? (пробовал играться с параметром Line Breaks - никакого эффекта(( )
Ну или посоветуйте, может, какое-нибудь другое решение, главное, чтобы текст читался и был крупным.
Заранее большое спасибо за любую попытку помочь)
Ответ: таак, уже почти добился, чего хотел, но почему-то не работает в портретной ориентации (в ландшафтной все ок). может, подскажете, чего я не замечаю?

Label на вьюхе один (pickupLabel), привязки - equal widths и equal heigths с view.

переделанная функция под Swift:
Кликните здесь для просмотра всего текста
Код Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
    func getSizeForText(text: NSString, maxWidth: CGFloat, fontName: String, fontSize:CGFloat) -> CGSize {
        var constraintSize: CGSize = CGSizeZero
        
        constraintSize.height = CGFloat.max
        constraintSize.width = maxWidth
        let attributesDictionary: NSDictionary = NSDictionary(objectsAndKeys: UIFont(name: fontName, size: fontSize)!, NSFontAttributeName)
        
        let frame: CGRect = text.boundingRectWithSize(constraintSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: attributesDictionary, context: nil)
        
        let stringSize:CGSize = frame.size
        return stringSize
        
    }


viewDidLoad:
textFromInput - это строка со словами
Кликните здесь для просмотра всего текста
Код Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
override func viewDidLoad() {
        super.viewDidLoad()
 
    
 
let words = textFromInput.componentsSeparatedByString(" ")
 
let longest = words.reduce(String?()) {
    (longest, word) in
    longest == nil || countElements(word) > countElements(longest!) ? word : longest
   
}
 
    var maxs: CGSize = CGSizeZero
    var fontSize: CGFloat = 10
    do {
    fontSize++
    maxs = self.getSizeForText(longest!, maxWidth: CGFloat.max, fontName: "Helvetica", fontSize: fontSize)
    } while maxs.width < pickupLabel.frame.size.width
    
    
    pickupLabel.text = textFromInput
    pickupLabel.font = UIFont(name: "Helvetica", size: fontSize)
    pickupLabel.numberOfLines = 0
    
    println("Самое длинное слово: \(longest!)")
    println("Искомый максимальный размер шрифта: \(Int(fontSize))")
    println("Ширина рамки Label: \(pickupLabel.frame.size.width)")
    println("Ширина рамки View: \(self.view.frame.size.width)")
}

И что получается:

в портретной:
Кликните здесь для просмотра всего текста
Пляски вокруг UILabel (как нормально настроить перенос текста?)


в ландшафтной:
Кликните здесь для просмотра всего текста
Пляски вокруг UILabel (как нормально настроить перенос текста?)


пробовал сравнивать maxs с self.view.frame.size.width - но почему-то тоже ничего не получается(