【发布时间】:2011-09-17 09:20:56
【问题描述】:
我在 iPod 客户端和 C 服务器之间建立了连接。 我可以在移动滑块时发送滑块的数据,并正确获取服务器上的数据。唯一的问题是滑块的蓝点不会移动,它下面的标签也不会改变滑块的值。当我断开连接时,蓝点会移动到应有的位置,并且标签会显示其值。以下是代码:
-(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
{
switch (streamEvent)
{
case NSStreamEventHasSpaceAvailable:
event = @"NSStreamEventHasSpaceAvailable";
connectButton.enabled = NO;
disconnectButton.enabled = YES;
if (theStream == oStream)
{
//send data
const uint8_t *buffer = (const uint8_t *)[dataSlider UTF8String];
NSInteger err = [self writeToServer:buffer];
if ( err == -1)
NSLog(@"Error sending data.");
else
NSLog(@"Success sending data.");
}
break;
}
- (IBAction)sliderChanged:(id)sender
{
UISlider *slider = (UISlider *)sender;
progressAsInt = (int)(slider.value + 0.5f);
sliderValue = [[NSString alloc] initWithFormat:@"%d", progressAsInt];
sliderLabel.text = sliderValue;
dataSlider = sliderValue;
}
这是它应该工作的方式:服务器总是要求打印一些东西。每当服务器调用 read() 时,我都会移动滑块并发送它的值。
问题:滑块在视觉上没有移动,但它的值发生了变化(我可以在服务器的 printfs 中看到它)。
有什么想法吗?
【问题讨论】:
-
没有任何代码几乎不可能有任何想法。你试过 setNeedsDisplay 吗?
-
嗯...基本上我对滑块的了解是:
- (IBAction)sliderChanged:(id)sender { UISlider *slider = (UISlider *)sender; progressAsInt = (int)(slider.value + 0.5f); sliderValue = [[NSString alloc] initWithFormat:@"%d", progressAsInt]; sliderLabel.text = sliderValue; dataSlider = sliderValue; }我在调用[self writeToServer:buffer];时使用 dataSlider 不,我不知道,我会寻找它。
标签: ios sockets networking slider uislider