Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextView字体大小未更新_Ios_Iphone_Objective C_Uitextview - Fatal编程技术网

Ios UITextView字体大小未更新

Ios UITextView字体大小未更新,ios,iphone,objective-c,uitextview,Ios,Iphone,Objective C,Uitextview,我有一个UITextView在UIViewController中,它包含一些按钮:其中两个按钮用于缩放UITextView中包含的文本defaultFontSize在viewDidLoad()上初始化 这些按钮有一个链接到它们的iAction - (IBAction)zoomIn:(id)sender { if(defaultFontSize < 60) { defaultFontSize = defaultFontSize + 2; [theCon

我有一个
UITextView
UIViewController
中,它包含一些按钮:其中两个按钮用于缩放
UITextView
中包含的文本
defaultFontSize
viewDidLoad()上初始化

这些按钮有一个链接到它们的
iAction

- (IBAction)zoomIn:(id)sender {
    if(defaultFontSize < 60) {
        defaultFontSize = defaultFontSize + 2;
        [theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
    }
}

/* ... */

- (IBAction)zoomOut:(id)sender {
    if(defaultFontSize > 14) {
        defaultFontSize = defaultFontSize - 2;
        [theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];            
    }
}
-(iAction)缩放:(id)发送方{
如果(默认字体大小<60){
defaultFontSize=defaultFontSize+2;
[内容集字体:[UIFont systemFontOfSize:defaultFontSize]];
}
}
/* ... */
-(iAction)zoomOut:(id)发送方{
如果(默认字体大小>14){
defaultFontSize=defaultFontSize-2;
[内容集字体:[UIFont systemFontOfSize:defaultFontSize]];
}
}
当我第一次显示
UIViewController
并点击
zoomIn
zoomOut
按钮时,
内容中的文本大小不会改变

更准确地说:调用了这些方法(我放了一些日志),但是没有更新
UITextView
字体大小

顺便说一句,如果我点击其他按钮(点击的按钮会改变屏幕的不透明度,所以我认为这会迫使屏幕刷新)点击我之前所做的所有点击(即,如果我点击缩放2次,我得到的字体大小为+4),然后开始正常工作,它就会改变

问题: 每当我想“刷新”UITextView时,如何(如果可能)强制执行? 为什么我的按钮在开始显示
UIViewController
时不工作,但在“屏幕刷新”后又工作


如果您能提供帮助,我将非常高兴:-)

更改字体大小后立即在UITextView上调用setNeedsLayout。某些方法必须使布局无效(如更改不透明度),这很有意义。更改字体特征不会使布局无效-您必须告诉操作系统需要重新布局

- (IBAction)zoomIn:(id)sender {
    if(defaultFontSize < 60) {
        defaultFontSize = defaultFontSize + 2;
        [theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
        [theContent setNeedsLayout];
    }
}

- (IBAction)zoomOut:(id)sender {
    if(defaultFontSize > 14) {
        defaultFontSize = defaultFontSize - 2;
        [theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];           
        [theContent setNeedsLayout]; 
    }
}
-(iAction)缩放:(id)发送方{
如果(默认字体大小<60){
defaultFontSize=defaultFontSize+2;
[内容集字体:[UIFont systemFontOfSize:defaultFontSize]];
[内容设置需要删除];
}
}
-(iAction)zoomOut:(id)发送方{
如果(默认字体大小>14){
defaultFontSize=defaultFontSize-2;
[内容集字体:[UIFont systemFontOfSize:defaultFontSize]];
[内容设置需要删除];
}
}

愚蠢的解决方案成功了。。。我将内容保存在一个临时变量中并重新插入。。。
不是很自豪,但它起作用了

- (IBAction)zoomIn:(id)sender {

    if(defaultFontSize < 60) {
        NSString *tmpString;
        tmpString = theContent.text;
        defaultFontSize = defaultFontSize + 2.0;
        [theContent setFont:[UIFont systemFontOfSize:defaultFontSize]];
        [theContent setText:@""];
        [theContent setText:tmpString];
    }
}
-(iAction)缩放:(id)发送方{
如果(默认字体大小<60){
NSString*tmpString;
tmpString=content.text;
defaultFontSize=defaultFontSize+2.0;
[内容集字体:[UIFont systemFontOfSize:defaultFontSize]];
[内容设置文本:@”“;
[内容设置文本:tmpString];
}
}

这样对我来说很好。你真的把你的按钮连接到你的动作上了吗?我把我用来测试它的项目贴到我的GIT上了-你可以在这里下载:动作是连接的,在我强制屏幕“刷新”后它们工作正常